mirror of https://github.com/lukechilds/node.git
Browse Source
This commit exposes the UV_PROCESS_WINDOWS_HIDE flag in Node as a windowsHide option to the child_process methods. The option is only applicable to Windows, and is ignored elsewhere. Fixes: https://github.com/nodejs/node/issues/15217 PR-URL: https://github.com/nodejs/node/pull/15380 Reviewed-By: Ben Noordhuis <info@bnoordhuis.nl> Reviewed-By: James M Snell <jasnell@gmail.com>v9.x-staging
cjihrig
7 years ago
8 changed files with 122 additions and 0 deletions
@ -0,0 +1,52 @@ |
|||
// Flags: --expose_internals
|
|||
'use strict'; |
|||
const common = require('../common'); |
|||
const assert = require('assert'); |
|||
const cp = require('child_process'); |
|||
const internalCp = require('internal/child_process'); |
|||
const cmd = process.execPath; |
|||
const args = ['-p', '42']; |
|||
const options = { windowsHide: true }; |
|||
|
|||
// Since windowsHide isn't really observable, monkey patch spawn() and
|
|||
// spawnSync() to verify that the flag is being passed through correctly.
|
|||
const originalSpawn = internalCp.ChildProcess.prototype.spawn; |
|||
const originalSpawnSync = internalCp.spawnSync; |
|||
|
|||
internalCp.ChildProcess.prototype.spawn = common.mustCall(function(options) { |
|||
assert.strictEqual(options.windowsHide, true); |
|||
return originalSpawn.apply(this, arguments); |
|||
}, 2); |
|||
|
|||
internalCp.spawnSync = common.mustCall(function(options) { |
|||
assert.strictEqual(options.options.windowsHide, true); |
|||
return originalSpawnSync.apply(this, arguments); |
|||
}); |
|||
|
|||
{ |
|||
const child = cp.spawnSync(cmd, args, options); |
|||
|
|||
assert.strictEqual(child.status, 0); |
|||
assert.strictEqual(child.signal, null); |
|||
assert.strictEqual(child.stdout.toString().trim(), '42'); |
|||
assert.strictEqual(child.stderr.toString().trim(), ''); |
|||
} |
|||
|
|||
{ |
|||
const child = cp.spawn(cmd, args, options); |
|||
|
|||
child.on('exit', common.mustCall((code, signal) => { |
|||
assert.strictEqual(code, 0); |
|||
assert.strictEqual(signal, null); |
|||
})); |
|||
} |
|||
|
|||
{ |
|||
const callback = common.mustCall((err, stdout, stderr) => { |
|||
assert.ifError(err); |
|||
assert.strictEqual(stdout.trim(), '42'); |
|||
assert.strictEqual(stderr.trim(), ''); |
|||
}); |
|||
|
|||
cp.execFile(cmd, args, options, callback); |
|||
} |
Loading…
Reference in new issue