Чтение дочернего процесса узла (порождения) stdout с разрывами строк

Я пытаюсь запустить дочерний процесс в node.js с помощью

function runProcess (args) {
  args = args || [];
  var proc = spawn('node', [path.join(__dirname, '..', 'bin', 'library.js')].concat(args), {cwd: __dirname});
  proc.stdout.setEncoding('utf8');
  return proc;
}

У меня есть тест, в котором я использую функцию выше:

describe('test', function () {
  it('should list installed generators', function (done) {
    var process = runProcess();
    var data = '';
    process.stdout.on('data', function(data) {
        var str = data.toString(), lines = str.split(/(\r?\n)/g);
        for (var i=0; i<lines.length; i++) {
            console.log("chucnk ---------> " + lines[i]); // only prints one line
       }
    });
    process.on('close', function (code) {
      code.should.equal(0);
      data.should.match(/\[process\] ├── bad/);
      data.should.match(/\[process\] └── test/);
      done();
    });
  });

Процесс использует мел и файл с именем log.js для отображения вывода консоли:

var chalk = require('chalk');

module.exports = function(){
  'use strict';
  var sig = '['+chalk.green('process')+']';
  var args = Array.prototype.slice.call(arguments);
  args.unshift(sig);
  console.log.apply(console, args); // Invoked 3 times!
  return this;
};

Если я запущу процесс вручную, я увижу ожидаемый результат:

[process] Installed generators
[process] ├── bad
[process] └── test

но когда я запускаю модульный тест, строки 2 и 3 отсутствуют

chucnk ---------> [process] Installed generators
chucnk ---------> 
chucnk ---------> 

Я попробовал предложенный в формат строки stdout NodeJS spawn безуспешно.

Знаешь, почему я не могу прочитать строчки после первой?


person Remo H. Jansen    schedule 24.03.2015    source источник