mirror of https://github.com/lukechilds/node.git
Browse Source
Make the internal `SyncWriteStream` a proper `stream.Writable` subclass. This allows for quite a bit of simplification, since `SyncWriteStream` predates the streams2/streams3 implementations. Fixes: https://github.com/nodejs/node/issues/8828 PR-URL: https://github.com/nodejs/node/pull/8830 Reviewed-By: Matteo Collina <matteo.collina@gmail.com> Reviewed-By: James M Snell <jasnell@gmail.com> Reviewed-By: Jeremiah Senkpiel <fishrock123@rocketmail.com>v7.x
committed by
James M Snell
2 changed files with 58 additions and 42 deletions
@ -0,0 +1,40 @@ |
|||||
|
'use strict'; |
||||
|
const common = require('../common'); |
||||
|
const assert = require('assert'); |
||||
|
const spawn = require('child_process').spawn; |
||||
|
const stream = require('stream'); |
||||
|
const fs = require('fs'); |
||||
|
const path = require('path'); |
||||
|
|
||||
|
// require('internal/fs').SyncWriteStream is used as a stdio implementation
|
||||
|
// when stdout/stderr point to files.
|
||||
|
|
||||
|
if (process.argv[2] === 'child') { |
||||
|
// Note: Calling console.log() is part of this test as it exercises the
|
||||
|
// SyncWriteStream#_write() code path.
|
||||
|
console.log(JSON.stringify([process.stdout, process.stderr].map((stdio) => ({ |
||||
|
instance: stdio instanceof stream.Writable, |
||||
|
readable: stdio.readable, |
||||
|
writable: stdio.writable, |
||||
|
})))); |
||||
|
|
||||
|
return; |
||||
|
} |
||||
|
|
||||
|
common.refreshTmpDir(); |
||||
|
|
||||
|
const filename = path.join(common.tmpDir, 'stdout'); |
||||
|
const stdoutFd = fs.openSync(filename, 'w'); |
||||
|
|
||||
|
const proc = spawn(process.execPath, [__filename, 'child'], { |
||||
|
stdio: ['inherit', stdoutFd, stdoutFd ] |
||||
|
}); |
||||
|
|
||||
|
proc.on('close', common.mustCall(() => { |
||||
|
fs.closeSync(stdoutFd); |
||||
|
|
||||
|
assert.deepStrictEqual(JSON.parse(fs.readFileSync(filename, 'utf8')), [ |
||||
|
{ instance: true, readable: false, writable: true }, |
||||
|
{ instance: true, readable: false, writable: true } |
||||
|
]); |
||||
|
})); |
Loading…
Reference in new issue