node/test/parallel/test-runner-force-exit-flus...

50 lines
1.5 KiB
JavaScript

'use strict';
require('../common');
const fixtures = require('../common/fixtures');
const tmpdir = require('../common/tmpdir');
const { match, strictEqual } = require('node:assert');
const { spawnSync } = require('node:child_process');
const { readFileSync } = require('node:fs');
const { test } = require('node:test');
function runWithReporter(reporter) {
const destination = tmpdir.resolve(`${reporter}.out`);
const args = [
'--test-force-exit',
`--test-reporter=${reporter}`,
`--test-reporter-destination=${destination}`,
fixtures.path('test-runner', 'reporters.js'),
];
const child = spawnSync(process.execPath, args);
strictEqual(child.stdout.toString(), '');
strictEqual(child.stderr.toString(), '');
strictEqual(child.status, 1);
return destination;
}
tmpdir.refresh();
test('junit reporter', () => {
const output = readFileSync(runWithReporter('junit'), 'utf8');
match(output, /<!-- tests 4 -->/);
match(output, /<!-- pass 2 -->/);
match(output, /<!-- fail 2 -->/);
match(output, /<!-- duration_ms/);
match(output, /<\/testsuites>/);
});
test('spec reporter', () => {
const output = readFileSync(runWithReporter('spec'), 'utf8');
match(output, /tests 4/);
match(output, /pass 2/);
match(output, /fail 2/);
});
test('tap reporter', () => {
const output = readFileSync(runWithReporter('tap'), 'utf8');
match(output, /# tests 4/);
match(output, /# pass 2/);
match(output, /# fail 2/);
match(output, /# duration_ms/);
});