test_runner: fix isSkipped check in junit · nodejs/node@eb8b193

File tree

2 files changed

lines changed

  • lib/internal/test_runner/reporter

2 files changed

lines changed

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) {

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

});