test_runner: fix test enqueue when test file has syntax error

PR-URL: https://github.com/nodejs/node/pull/61573
Reviewed-By: Moshe Atlow <moshe@atlow.co.il>
Reviewed-By: Aviv Keller <me@aviv.sh>
Reviewed-By: Pietro Marchini <pietro.marchini94@gmail.com>
This commit is contained in:
Edy Silva authored and Juan José Arboleda committed 2026-07-19 17:30:36 -05:00
1 parent 9310acbaa6
commit 4edecac522
3 files changed
+30 -1

No files matched your search

+4 -1
View File
@@ -792,7 +792,10 @@ function run(options = kEmptyObject) {
);
if (topLevelTestCount === root.subtests.length) {
// This file had no tests in it. Add the placeholder test.
const subtest = root.createSubtest(Test, testFile);
const subtest = root.createSubtest(Test, testFile, kEmptyObject, undefined, {
__proto__: null,
loc: [1, 1, resolve(testFile)],
});
if (threw) {
subtest.fail(importError);
}
+7
View File
@@ -0,0 +1,7 @@
import { test } from 'node:test';
test('a test!', () => {
if true {
// syntax error
}
});
@@ -0,0 +1,19 @@
'use strict';
const common = require('../common');
const assert = require('node:assert');
const fixtures = require('../common/fixtures');
const { run } = require('node:test');
const testFile = fixtures.path('test-runner', 'syntax-error-test.mjs');
const testRun = run({
files: [testFile],
isolation: 'none'
});
testRun.on('test:enqueue', common.mustCall((test) => {
assert.strictEqual(test.file, testFile);
}));
testRun.on('test:fail', common.mustCall((test) => {
assert.match(test.details.error.toString(), /SyntaxError: Unexpected token 'true'/);
}));