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>v6
Anna Henningsen
8 years ago
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