'use strict'; const common = require('../common'); // This test is intended for Windows only if (!common.isWindows) common.skip('this test is Windows-specific.'); const assert = require('assert'); 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 args = [`"${__filename}"`, 'child', '<', stdinPipeName, '>', stdoutPipeName]; const child = spawn(`"${process.execPath}"`, args, { shell: true }); child.on('exit', common.mustCall(function(exitCode) { stdinPipeServer.close(); stdoutPipeServer.close(); assert.strictEqual(exitCode, 0); })); } else { // child process.stdin.pipe(process.stdout); }