node/test/parallel/test-spawn-cmd-named-pipe.js
cjihrig 6510eb5ddc test: s/assert.fail/common.fail as appropriate
Many tests use assert.fail(null, null, msg) where it would be
simpler to use common.fail(msg). This is largely because
common.fail() is fairly new. This commit makes the replacement
when applicable.

PR-URL: https://github.com/nodejs/node/pull/7735
Reviewed-By: Sakthipriyan Vairamani <thechargingvolcano@gmail.com>
Reviewed-By: Ben Noordhuis <info@bnoordhuis.nl>
Reviewed-By: Jeremiah Senkpiel <fishrock123@rocketmail.com>
2016-07-15 15:50:01 -04:00

59 lines
1.5 KiB
JavaScript

'use strict';
const common = require('../common');
const assert = require('assert');
// This test is intended for Windows only
if (!common.isWindows) {
common.skip('this test is Windows-specific.');
return;
}
if (!process.argv[2]) {
// parent
const net = require('net');
const spawn = require('child_process').spawn;
const path = require('path');
const pipeNamePrefix = path.basename(__filename) + '.' + process.pid;
const stdinPipeName = '\\\\.\\pipe\\' + pipeNamePrefix + '.stdin';
const stdoutPipeName = '\\\\.\\pipe\\' + pipeNamePrefix + '.stdout';
const stdinPipeServer = net.createServer(function(c) {
c.on('end', common.mustCall(function() {
}));
c.end('hello');
});
stdinPipeServer.listen(stdinPipeName);
const output = [];
const stdoutPipeServer = net.createServer(function(c) {
c.on('data', function(x) {
output.push(x);
});
c.on('end', common.mustCall(function() {
assert.strictEqual(output.join(''), 'hello');
}));
});
stdoutPipeServer.listen(stdoutPipeName);
const comspec = process.env['comspec'];
if (!comspec || comspec.length === 0) {
common.fail('Failed to get COMSPEC');
}
const args = ['/c', process.execPath, __filename, 'child',
'<', stdinPipeName, '>', stdoutPipeName];
const child = spawn(comspec, args);
child.on('exit', common.mustCall(function(exitCode) {
stdinPipeServer.close();
stdoutPipeServer.close();
assert.strictEqual(exitCode, 0);
}));
} else {
// child
process.stdin.pipe(process.stdout);
}