Skip to content

Commit 5d4d737

Browse files
committed
test: improve WPT runner summary
Signed-off-by: Filip Skokan <panva.ip@gmail.com>
1 parent 43d5058 commit 5d4d737

File tree

1 file changed

+37
-19
lines changed

1 file changed

+37
-19
lines changed

test/common/wpt.js

Lines changed: 37 additions & 19 deletions
Original file line numberDiff line numberDiff line change
@@ -500,14 +500,15 @@ class StatusLoader {
500500

501501
load() {
502502
const dir = path.join(__dirname, '..', 'wpt');
503-
let statusFile = path.join(dir, 'status', `${this.path}.json`);
503+
const jsonFile = path.join(dir, 'status', `${this.path}.json`);
504504
let result;
505505

506-
if (fs.existsSync(statusFile)) {
507-
result = JSON.parse(fs.readFileSync(statusFile, 'utf8'));
506+
if (fs.existsSync(jsonFile)) {
507+
this.statusFile = `${this.path}.json`;
508+
result = JSON.parse(fs.readFileSync(jsonFile, 'utf8'));
508509
} else {
509-
statusFile = path.join(dir, 'status', `${this.path}.cjs`);
510-
result = require(statusFile);
510+
this.statusFile = `${this.path}.cjs`;
511+
result = require(path.join(dir, 'status', this.statusFile));
511512
}
512513

513514
this.rules.addRules(result);
@@ -573,13 +574,16 @@ class WPTRunner {
573574

574575
this.status = new StatusLoader(path);
575576
this.status.load();
577+
this.statusFile = this.status.statusFile;
576578
this.specs = new Set(this.status.specs);
577579

578580
this.results = {};
579581
this.inProgress = new Set();
580582
this.workers = new Map();
581583
this.unexpectedFailures = [];
582584

585+
this.subtestCounts = { passed: 0, failed: 0, expectedFailures: 0, skipped: 0, unexpectedPasses: 0 };
586+
583587
if (process.env.WPT_REPORT != null) {
584588
this.report = new WPTReport(path);
585589
}
@@ -775,7 +779,6 @@ class WPTRunner {
775779
const failures = [];
776780
let expectedFailures = 0;
777781
let skipped = 0;
778-
let skippedTests = 0;
779782
for (const [key, item] of Object.entries(this.results)) {
780783
if (item.fail?.unexpected) {
781784
failures.push(key);
@@ -786,9 +789,6 @@ class WPTRunner {
786789
if (item.skip) {
787790
skipped++;
788791
}
789-
if (item.skipTests) {
790-
skippedTests += item.skipTests.length;
791-
}
792792
}
793793

794794
const unexpectedPasses = [];
@@ -823,23 +823,28 @@ class WPTRunner {
823823
// so that results survive if the process is killed.
824824
this.report?.write();
825825

826+
const p = (n, word, suffix = 's') => `${n} ${word}${n === 1 ? '' : suffix}`;
826827
const ran = queue.length;
827828
const total = ran + skipped;
828829
const passed = ran - expectedFailures - failures.length;
830+
const { subtestCounts } = this;
829831
console.log('');
830-
console.log(`Ran ${ran}/${total} tests, ${skipped} skipped,`,
831-
`${passed} passed, ${expectedFailures} expected failures,`,
832-
`${failures.length} unexpected failures,`,
833-
`${unexpectedPasses.length} unexpected passes` +
834-
(skippedTests ? `, ${skippedTests} subtests skipped` : ''));
832+
console.log(`Files: ${ran}/${total} ran, ${passed} passed,`,
833+
`${skipped} skipped, ${p(expectedFailures, 'expected failure')},`,
834+
`${p(failures.length, 'unexpected failure')},`,
835+
`${p(unexpectedPasses.length, 'unexpected pass', 'es')}`);
836+
console.log(`Subtests: ${subtestCounts.passed} passed,`,
837+
`${subtestCounts.skipped} skipped, ${p(subtestCounts.expectedFailures, 'expected failure')},`,
838+
`${p(subtestCounts.failed, 'unexpected failure')},`,
839+
`${p(subtestCounts.unexpectedPasses, 'unexpected pass', 'es')}`);
835840
if (failures.length > 0) {
836-
const file = path.join('test', 'wpt', 'status', `${this.path}.json`);
841+
const file = path.join('test', 'wpt', 'status', this.statusFile);
837842
throw new Error(
838843
`Found ${failures.length} unexpected failures. ` +
839844
`Consider updating ${file} for these files:\n${failures.join('\n')}`);
840845
}
841846
if (unexpectedPasses.length > 0) {
842-
const file = path.join('test', 'wpt', 'status', `${this.path}.json`);
847+
const file = path.join('test', 'wpt', 'status', this.statusFile);
843848
throw new Error(
844849
`Found ${unexpectedPasses.length} unexpected passes. ` +
845850
`Consider updating ${file} for these files:\n${unexpectedPasses.join('\n')}`);
@@ -875,7 +880,7 @@ class WPTRunner {
875880
if (status !== kPass) {
876881
this.fail(spec, test, status, reportResult);
877882
} else {
878-
this.succeed(test, status, reportResult);
883+
this.succeed(spec, test, status, reportResult);
879884
}
880885
}
881886

@@ -943,14 +948,22 @@ class WPTRunner {
943948
}
944949
}
945950

946-
succeed(test, status, reportResult) {
947-
console.log(`[${status.toUpperCase()}] ${test.name}`);
951+
succeed(spec, test, status, reportResult) {
952+
const unexpectedPass = spec.failedTests.includes(test.name);
953+
if (unexpectedPass) {
954+
console.log(`[UNEXPECTED_PASS][${status.toUpperCase()}] ${test.name}`);
955+
this.subtestCounts.unexpectedPasses++;
956+
} else {
957+
console.log(`[${status.toUpperCase()}] ${test.name}`);
958+
this.subtestCounts.passed++;
959+
}
948960
reportResult?.addSubtest(test.name, 'PASS');
949961
}
950962

951963
skipTest(spec, test, reportResult) {
952964
console.log(`[SKIP] ${test.name}`);
953965
reportResult?.addSubtest(test.name, 'NOTRUN');
966+
this.subtestCounts.skipped++;
954967
this.addTestResult(spec, {
955968
name: test.name,
956969
status: kSkip,
@@ -973,6 +986,11 @@ class WPTRunner {
973986
console.log(`Command: ${command}\n`);
974987

975988
reportResult?.addSubtest(test.name, 'FAIL', test.message);
989+
if (expected) {
990+
this.subtestCounts.expectedFailures++;
991+
} else {
992+
this.subtestCounts.failed++;
993+
}
976994

977995
this.addTestResult(spec, {
978996
name: test.name,

0 commit comments

Comments
 (0)