mirror of https://github.com/lukechilds/node.git
Browse Source
If both -i and -e flags are specified, do not ignore the -i. Instead, launch the interactive REPL and start by evaluating the passed string. Fixes: https://github.com/nodejs/node/issues/1197 PR-URL: https://github.com/nodejs/node/pull/5655 Reviewed-By: James M Snell <jasnell@gmail.com> Reviewed-By: Jeremiah Senkpiel <fishrock123@rocketmail.com>process-exit-stdio-flushing
Rich Trott
9 years ago
2 changed files with 35 additions and 2 deletions
@ -0,0 +1,27 @@ |
|||||
|
'use strict'; |
||||
|
const common = require('../common'); |
||||
|
const assert = require('assert'); |
||||
|
const spawn = require('child_process').spawn; |
||||
|
|
||||
|
// spawn a node child process in "interactive" mode (force the repl) and eval
|
||||
|
const cp = spawn(process.execPath, ['-i', '-e', 'console.log("42")']); |
||||
|
var gotToEnd = false; |
||||
|
const timeoutId = setTimeout(function() { |
||||
|
throw new Error('timeout!'); |
||||
|
}, common.platformTimeout(1000)); // give node + the repl 1 second to boot up
|
||||
|
|
||||
|
cp.stdout.setEncoding('utf8'); |
||||
|
|
||||
|
var output = ''; |
||||
|
cp.stdout.on('data', function(b) { |
||||
|
output += b; |
||||
|
if (output === '> 42\n') { |
||||
|
clearTimeout(timeoutId); |
||||
|
gotToEnd = true; |
||||
|
cp.kill(); |
||||
|
} |
||||
|
}); |
||||
|
|
||||
|
process.on('exit', function() { |
||||
|
assert(gotToEnd); |
||||
|
}); |
Loading…
Reference in new issue