Skip to content
Merged
Changes from 1 commit
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Prev Previous commit
Next Next commit
test: regression test tmpdir
PR-URL: #28035
Reviewed-By: Rich Trott <rtrott@gmail.com>
Reviewed-By: Ruben Bridgewater <ruben@bridgewater.de>
Reviewed-By: Benjamin Gruenbaum <benjamingr@gmail.com>
Reviewed-By: Sam Roberts <vieuxtech@gmail.com>
  • Loading branch information
refack committed Jun 6, 2019
commit 2f8cf5e5b543c058a00e0a7838287ebb10c158dc
54 changes: 35 additions & 19 deletions test/parallel/test-common.js
Original file line number Diff line number Diff line change
Expand Up @@ -23,8 +23,11 @@
const common = require('../common');
const hijackstdio = require('../common/hijackstdio');
const fixtures = require('../common/fixtures');
const tmpdir = require('../common/tmpdir');
const assert = require('assert');
const { execFile } = require('child_process');
const { writeFileSync, existsSync } = require('fs');
const { join } = require('path');

// Test for leaked global detection
{
Expand Down Expand Up @@ -124,25 +127,38 @@ const HIJACK_TEST_ARRAY = [ 'foo\n', 'bar\n', 'baz\n' ];
assert.strictEqual(originalWrite, stream.write);
});

// hijackStderr and hijackStdout again
// for console
[[ 'err', 'error' ], [ 'out', 'log' ]].forEach(([ type, method ]) => {
hijackstdio[`hijackStd${type}`](common.mustCall(function(data) {
assert.strictEqual(data, 'test\n');
// Test `tmpdir`.
{
tmpdir.refresh();
assert.ok(/\.tmp\.\d+/.test(tmpdir.path));
const sentinelPath = join(tmpdir.path, 'gaga');
writeFileSync(sentinelPath, 'googoo');
tmpdir.refresh();
assert.strictEqual(existsSync(tmpdir.path), true);
assert.strictEqual(existsSync(sentinelPath), false);
}

// throw an error
throw new Error(`console ${type} error`);
}));
// hijackStderr and hijackStdout again for console
// Must be last, since it uses `process.on('uncaughtException')`
{
[['err', 'error'], ['out', 'log']].forEach(([type, method]) => {
hijackstdio[`hijackStd${type}`](common.mustCall(function(data) {
assert.strictEqual(data, 'test\n');

console[method]('test');
hijackstdio[`restoreStd${type}`]();
});
// throw an error
throw new Error(`console ${type} error`);
}));

console[method]('test');
hijackstdio[`restoreStd${type}`]();
});

let uncaughtTimes = 0;
process.on('uncaughtException', common.mustCallAtLeast(function(e) {
assert.strictEqual(uncaughtTimes < 2, true);
assert.strictEqual(e instanceof Error, true);
assert.strictEqual(
e.message,
`console ${([ 'err', 'out' ])[uncaughtTimes++]} error`);
}, 2));
let uncaughtTimes = 0;
process.on('uncaughtException', common.mustCallAtLeast(function(e) {
assert.strictEqual(uncaughtTimes < 2, true);
assert.strictEqual(e instanceof Error, true);
assert.strictEqual(
e.message,
`console ${(['err', 'out'])[uncaughtTimes++]} error`);
}, 2));
} // End of "Must be last".