Skip to content

Commit eb8b193

Browse files
mete0rfishtargos
authored andcommitted
test_runner: fix isSkipped check in junit
The `isSkipped` function in the JUnit reporter was incorrectly checking for `node?.attrs.failures` instead of `node?.attrs.skipped`. PR-URL: #59414 Reviewed-By: Moshe Atlow <moshe@atlow.co.il> Reviewed-By: Pietro Marchini <pietro.marchini94@gmail.com>
1 parent 9a7700d commit eb8b193

File tree

2 files changed

+14
-1
lines changed

2 files changed

+14
-1
lines changed

lib/internal/test_runner/reporter/junit.js

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -58,7 +58,7 @@ function isFailure(node) {
5858
}
5959

6060
function isSkipped(node) {
61-
return (node?.children && ArrayPrototypeSome(node.children, (c) => c.tag === 'skipped')) || node?.attrs?.failures;
61+
return (node?.children && ArrayPrototypeSome(node.children, (c) => c.tag === 'skipped')) || node?.attrs?.skipped;
6262
}
6363

6464
module.exports = async function* junitReporter(source) {

test/parallel/test-runner-reporters.js

Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -191,4 +191,17 @@ describe('node:test reporters', { concurrency: true }, () => {
191191
assert.match(fileConent, / skipped 0/);
192192
assert.match(fileConent, / todo 0/);
193193
});
194+
195+
it('should correctly report pass/fail for junit reporter using reporters.js', async () => {
196+
const file = tmpdir.resolve(`${tmpFiles++}.xml`);
197+
const child = spawnSync(process.execPath,
198+
['--test', '--test-reporter', 'junit', '--test-reporter-destination', file, testFile]);
199+
assert.strictEqual(child.stderr.toString(), '');
200+
assert.strictEqual(child.stdout.toString(), '');
201+
const fileContents = fs.readFileSync(file, 'utf8');
202+
assert.match(fileContents, /<testsuite .*name="nested".*tests="2".*failures="1".*skipped="0".*>/);
203+
assert.match(fileContents, /<testcase .*name="failing".*>\s*<failure .*type="testCodeFailure".*message="error".*>/);
204+
assert.match(fileContents, /<testcase .*name="ok".*classname="test".*\/>/);
205+
assert.match(fileContents, /<testcase .*name="top level".*classname="test".*\/>/);
206+
});
194207
});

0 commit comments

Comments
 (0)