diff --git a/test/parallel/test-stdout-close-unref.js b/test/parallel/test-stdout-close-unref.js index 37ab4987eebcaa..67c6141c963088 100644 --- a/test/parallel/test-stdout-close-unref.js +++ b/test/parallel/test-stdout-close-unref.js @@ -1,16 +1,30 @@ 'use strict'; -require('../common'); -var assert = require('assert'); +const common = require('../common'); +const assert = require('assert'); +const spawn = require('child_process').spawn; -var errs = 0; +if (process.argv[2] === 'child') { + var errs = 0; -process.stdin.resume(); -process.stdin._handle.close(); -process.stdin._handle.unref(); // Should not segfault. -process.stdin.on('error', function(err) { - errs++; -}); + process.stdin.resume(); + process.stdin._handle.close(); + process.stdin._handle.unref(); // Should not segfault. + process.stdin.on('error', function(err) { + errs++; + }); -process.on('exit', function() { - assert.strictEqual(errs, 1); -}); + process.on('exit', function() { + assert.strictEqual(errs, 1); + }); + return; +} + +// Use spawn so that we can be sure that stdin has a _handle property. +// Refs: https://github.com/nodejs/node/pull/5916 +const proc = spawn(process.execPath, [__filename, 'child'], { stdio: 'pipe' }); + +proc.stderr.pipe(process.stderr); +proc.on('exit', common.mustCall(function(exitCode) { + if (exitCode !== 0) + process.exitCode = exitCode; +}));