Skip to content

Commit

Permalink
test: improve assert test hygiene
Browse files Browse the repository at this point in the history
Do not pollute the source tree for the test. Instead of writing to the
source tree, spawn a process with the temp dir as cwd and write the file
there.
  • Loading branch information
Trott committed May 24, 2018
1 parent 029747a commit 564ccac
Showing 1 changed file with 27 additions and 20 deletions.
47 changes: 27 additions & 20 deletions test/parallel/test-assert-builtins-not-read-from-filesystem.js
Original file line number Diff line number Diff line change
@@ -1,16 +1,25 @@
// Flags: --expose-internals

'use strict';

require('../common');
// Do not read filesystem when creating AssertionError messages for code in
// builtin modules.

require('../common');
const assert = require('assert');
const EventEmitter = require('events');
const { errorCache } = require('internal/assert');
const { writeFileSync, unlinkSync } = require('fs');

// Do not read filesystem for error messages in builtin modules.
{
if (process.argv[2] !== 'child') {
const tmpdir = require('../common/tmpdir');
tmpdir.refresh();
const { spawnSync } = require('child_process');
const { output, status, error } =
spawnSync(process.execPath,
['--expose-internals', process.argv[1], 'child'],
{ cwd: tmpdir.path, env: process.env });
assert.ifError(error);
assert.strictEqual(status, 0, `Exit code: ${status}\n${output}`);
} else {
const EventEmitter = require('events');
const { errorCache } = require('internal/assert');
const { writeFileSync } = require('fs');
const e = new EventEmitter();

e.on('hello', assert);
Expand All @@ -27,18 +36,16 @@ const { writeFileSync, unlinkSync } = require('fs');
assert.strictEqual(errorCache.size, size - 1);
const data = `${'\n'.repeat(line - 1)}${' '.repeat(column - 1)}` +
'ok(failed(badly));';
try {
writeFileSync(filename, data);
assert.throws(
() => e.emit('hello', false),
{
message: 'false == true'
}
);
threw = true;
} finally {
unlinkSync(filename);
}

writeFileSync(filename, data);
assert.throws(
() => e.emit('hello', false),
{
message: 'false == true'
}
);
threw = true;

}
assert(threw);
}

0 comments on commit 564ccac

Please sign in to comment.