-
Notifications
You must be signed in to change notification settings - Fork 29.6k
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
Using stream._construct would cause the Readable to incorrectly greedily start reading. Fixes: #36251 PR-URL: #36823 Reviewed-By: Matteo Collina <matteo.collina@gmail.com> Reviewed-By: Benjamin Gruenbaum <benjamingr@gmail.com>
- Loading branch information
1 parent
0c11a17
commit cb0b53e
Showing
3 changed files
with
55 additions
and
1 deletion.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,42 @@ | ||
'use strict'; | ||
const common = require('../common'); | ||
const process = require('process'); | ||
|
||
let defaultShell; | ||
if (process.platform === 'linux' || process.platform === 'darwin') { | ||
defaultShell = '/bin/sh'; | ||
} else if (process.platform === 'win32') { | ||
defaultShell = 'cmd.exe'; | ||
} else { | ||
common.skip('This is test exists only on Linux/Win32/OSX'); | ||
} | ||
|
||
const { execSync } = require('child_process'); | ||
const fs = require('fs'); | ||
const path = require('path'); | ||
const tmpdir = require('../common/tmpdir'); | ||
|
||
const tmpDir = tmpdir.path; | ||
tmpdir.refresh(); | ||
const tmpCmdFile = path.join(tmpDir, 'test-stdin-from-file-spawn-cmd'); | ||
const tmpJsFile = path.join(tmpDir, 'test-stdin-from-file-spawn.js'); | ||
fs.writeFileSync(tmpCmdFile, 'echo hello'); | ||
fs.writeFileSync(tmpJsFile, ` | ||
'use strict'; | ||
const { spawn } = require('child_process'); | ||
// Reference the object to invoke the getter | ||
process.stdin; | ||
setTimeout(() => { | ||
let ok = false; | ||
const child = spawn(process.env.SHELL || '${defaultShell}', | ||
[], { stdio: ['inherit', 'pipe'] }); | ||
child.stdout.on('data', () => { | ||
ok = true; | ||
}); | ||
child.on('close', () => { | ||
process.exit(ok ? 0 : -1); | ||
}); | ||
}, 100); | ||
`); | ||
|
||
execSync(`${process.argv[0]} ${tmpJsFile} < ${tmpCmdFile}`); |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters