Browse Source

test: fix test-debug-port-from-cmdline

This change is a backport of 2b4b600660
from io.js.

Original commit message:

  This test was failing because the spawned process was terminated
  before anything could be done, by calling child.stdin.end. With this
  change, the child's stdin is no longer closed. When the stdin is not
  a tty, io.js waits for the whole input before starting, so the child
  must be run with --interactive to process the command sent by the
  parent. The child is killed explicitly by the parent before it exits.

  This test was failing silently because the asserts were not called if
  nothing was received from the child. This fix moves assertOutputLines
  to always run on exit.

  Fixes: https://github.com/nodejs/io.js/issues/2177
  Refs: https://github.com/nodejs/io.js/issues/2094
  PR-URL: https://github.com/nodejs/io.js/pull/2186
  Reviewed-By: Colin Ihrig <cjihrig@gmail.com>
  Reviewed-By: Rod Vagg <rod@vagg.org>
  Reviewed-By: Johan Bergström <bugs@bergstroem.nu>
  Reviewed-By: Alexis Campailla <alexis@janeasystems.com>

Reviewed-By: Colin Ihrig <cjihrig@gmail.com>
PR-URL: https://github.com/joyent/node/pull/25748
v0.12-staging
João Reis 10 years ago
parent
commit
ceb6a8c131
  1. 6
      test/simple/test-debug-port-from-cmdline.js

6
test/simple/test-debug-port-from-cmdline.js

@ -24,11 +24,11 @@ var assert = require('assert');
var spawn = require('child_process').spawn; var spawn = require('child_process').spawn;
var debugPort = common.PORT; var debugPort = common.PORT;
var args = ['--debug-port=' + debugPort]; var args = ['--interactive', '--debug-port=' + debugPort];
var childOptions = { stdio: ['pipe', 'pipe', 'pipe', 'ipc'] }; var childOptions = { stdio: ['pipe', 'pipe', 'pipe', 'ipc'] };
var child = spawn(process.execPath, args, childOptions); var child = spawn(process.execPath, args, childOptions);
child.stdin.end("process.send({ msg: 'childready' });"); child.stdin.write("process.send({ msg: 'childready' });\n");
child.stderr.on('data', function(data) { child.stderr.on('data', function(data) {
var lines = data.toString().replace(/\r/g, '').trim().split('\n'); var lines = data.toString().replace(/\r/g, '').trim().split('\n');
@ -43,6 +43,7 @@ child.on('message', function onChildMsg(message) {
process.on('exit', function() { process.on('exit', function() {
child.kill(); child.kill();
assertOutputLines();
}); });
var outputLines = []; var outputLines = [];
@ -51,7 +52,6 @@ function processStderrLine(line) {
outputLines.push(line); outputLines.push(line);
if (/Debugger listening/.test(line)) { if (/Debugger listening/.test(line)) {
assertOutputLines();
process.exit(); process.exit();
} }
} }

Loading…
Cancel
Save