diff --git a/graal-nodejs/lib/internal/test_runner/runner.js b/graal-nodejs/lib/internal/test_runner/runner.js index b99ce3bac02..2dd9ea678e3 100644 --- a/graal-nodejs/lib/internal/test_runner/runner.js +++ b/graal-nodejs/lib/internal/test_runner/runner.js @@ -185,6 +185,17 @@ class FileTest extends Test { #rawBufferSize = 0; #reportedChildren = 0; failedSubtests = false; + + constructor(options) { + super(options); + this.loc ??= { + __proto__: null, + line: 1, + column: 1, + file: resolve(this.name), + }; + } + #skipReporting() { return this.#reportedChildren > 0 && (!this.error || this.error.failureType === kSubtestsFailed); } diff --git a/graal-nodejs/test/parallel/test-runner-filetest-location.js b/graal-nodejs/test/parallel/test-runner-filetest-location.js new file mode 100644 index 00000000000..4e09bcd35ee --- /dev/null +++ b/graal-nodejs/test/parallel/test-runner-filetest-location.js @@ -0,0 +1,20 @@ +'use strict'; +const common = require('../common'); +const fixtures = require('../common/fixtures'); +const { strictEqual } = require('node:assert'); +const { relative } = require('node:path'); +const { run } = require('node:test'); +const fixture = fixtures.path('test-runner', 'never_ending_sync.js'); +const relativePath = relative(process.cwd(), fixture); +const stream = run({ + files: [relativePath], + timeout: common.platformTimeout(100), +}); + +stream.on('test:fail', common.mustCall((result) => { + strictEqual(result.name, relativePath); + strictEqual(result.details.error.failureType, 'testTimeoutFailure'); + strictEqual(result.line, 1); + strictEqual(result.column, 1); + strictEqual(result.file, fixture); +}));