'use strict'; const common = require('../common'); if (common.isWindows || common.isAIX || common.isIBMi) common.skip(`No /dev/stdin on ${process.platform}.`); const assert = require('assert'); const fs = require('fs/promises'); const childType = ['child-encoding', 'child-non-encoding']; if (process.argv[2] === childType[0]) { fs.readFile('/dev/stdin', 'utf8').then((data) => { process.stdout.write(data); }); return; } else if (process.argv[2] === childType[1]) { fs.readFile('/dev/stdin').then((data) => { process.stdout.write(data); }); return; } const data1 = 'Hello'; const data2 = 'World'; const expected = `${data1}\n${data2}\n`; const exec = require('child_process').exec; function test(child) { exec(...common.escapePOSIXShell`(echo "${data1}"; sleep 0.5; echo "${data2}") | "${process.execPath}" "${__filename}" "${child}"`, common.mustSucceed((stdout, stderr) => { assert.strictEqual( stdout, expected, `expected to read(${child === childType[0] ? 'with' : 'without'} encoding): '${expected}' but got: '${stdout}'`); assert.strictEqual( stderr, '', `expected not to read anything from stderr but got: '${stderr}'`); })); } test(childType[0]); test(childType[1]);