diff --git a/test/parallel/test-assert-builtins-not-read-from-filesystem.js b/test/parallel/test-assert-builtins-not-read-from-filesystem.js new file mode 100644 index 00000000000000..000798aca267a3 --- /dev/null +++ b/test/parallel/test-assert-builtins-not-read-from-filesystem.js @@ -0,0 +1,51 @@ +'use strict'; + +// Do not read filesystem when creating AssertionError messages for code in +// builtin modules. + +require('../common'); +const assert = require('assert'); + +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); + + let threw = false; + try { + e.emit('hello', false); + } catch (err) { + const frames = err.stack.split('\n'); + const [, filename, line, column] = frames[1].match(/\((.+):(\d+):(\d+)\)/); + // Reset the cache to check again + const size = errorCache.size; + errorCache.delete(`${filename}${line - 1}${column - 1}`); + assert.strictEqual(errorCache.size, size - 1); + const data = `${'\n'.repeat(line - 1)}${' '.repeat(column - 1)}` + + 'ok(failed(badly));'; + + writeFileSync(filename, data); + assert.throws( + () => e.emit('hello', false), + { + message: 'false == true' + } + ); + threw = true; + + } + assert(threw); +} diff --git a/test/parallel/test-assert.js b/test/parallel/test-assert.js index 56489b9e6e8b1c..12ae82475726a0 100644 --- a/test/parallel/test-assert.js +++ b/test/parallel/test-assert.js @@ -19,17 +19,12 @@ // OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE // USE OR OTHER DEALINGS IN THE SOFTWARE. -// Flags: --expose-internals - 'use strict'; /* eslint-disable node-core/prefer-common-expectserror */ const common = require('../common'); const assert = require('assert'); -const EventEmitter = require('events'); -const { errorCache } = require('internal/assert'); -const { writeFileSync, unlinkSync } = require('fs'); const { inspect } = require('util'); const a = assert; @@ -793,40 +788,6 @@ common.expectsError( } ); -// Do not try to check Node.js modules. -{ - const e = new EventEmitter(); - - e.on('hello', assert); - - let threw = false; - try { - e.emit('hello', false); - } catch (err) { - const frames = err.stack.split('\n'); - const [, filename, line, column] = frames[1].match(/\((.+):(\d+):(\d+)\)/); - // Reset the cache to check again - const size = errorCache.size; - errorCache.delete(`${filename}${line - 1}${column - 1}`); - 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); - } - } - assert(threw); -} - common.expectsError( // eslint-disable-next-line no-restricted-syntax () => assert.throws(() => {}, 'Error message', 'message'),