Skip to content

Commit

Permalink
test_runner: report tap subtest in order
Browse files Browse the repository at this point in the history
PR-URL: #45220
Reviewed-By: Colin Ihrig <cjihrig@gmail.com>
Reviewed-By: Benjamin Gruenbaum <benjamingr@gmail.com>
  • Loading branch information
MoLow authored and RafaelGSS committed Nov 10, 2022
1 parent eed799b commit 0040030
Show file tree
Hide file tree
Showing 3 changed files with 52 additions and 7 deletions.
23 changes: 16 additions & 7 deletions lib/internal/test_runner/test.js
Expand Up @@ -142,6 +142,7 @@ class TestContext {
class Test extends AsyncResource {
#abortController;
#outerSignal;
#reportedSubtest;

constructor(options) {
super('Test');
Expand Down Expand Up @@ -308,7 +309,7 @@ class Test extends AsyncResource {
}

if (i === 1 && this.parent !== null) {
this.reporter.subtest(this.indent, this.name);
this.reportSubtest();
}

// Report the subtest's results and remove it from the ready map.
Expand Down Expand Up @@ -631,12 +632,6 @@ class Test extends AsyncResource {
this.processReadySubtestRange(true);

// Output this test's results and update the parent's waiting counter.
if (this.subtests.length > 0) {
this.reporter.plan(this.subtests[0].indent, this.subtests.length);
} else {
this.reporter.subtest(this.indent, this.name);
}

this.report();
this.parent.waitingOn++;
this.finished = true;
Expand All @@ -648,6 +643,11 @@ class Test extends AsyncResource {
}

report() {
if (this.subtests.length > 0) {
this.reporter.plan(this.subtests[0].indent, this.subtests.length);
} else {
this.reportSubtest();
}
let directive;

if (this.skipped) {
Expand All @@ -666,6 +666,15 @@ class Test extends AsyncResource {
this.reporter.diagnostic(this.indent, this.diagnostics[i]);
}
}

reportSubtest() {
if (this.#reportedSubtest || this.parent === null) {
return;
}
this.#reportedSubtest = true;
this.parent.reportSubtest();
this.reporter.subtest(this.indent, this.name);
}
}

class TestHook extends Test {
Expand Down
10 changes: 10 additions & 0 deletions test/message/test_runner_describe_nested.js
@@ -0,0 +1,10 @@
// Flags: --no-warnings
'use strict';
require('../common');
const { describe, it } = require('node:test');

describe('nested - no tests', () => {
describe('nested', () => {
it('nested', () => {});
});
});
26 changes: 26 additions & 0 deletions test/message/test_runner_describe_nested.out
@@ -0,0 +1,26 @@
TAP version 13
# Subtest: nested - no tests
# Subtest: nested
# Subtest: nested
ok 1 - nested
---
duration_ms: *
...
1..1
ok 1 - nested
---
duration_ms: *
...
1..1
ok 1 - nested - no tests
---
duration_ms: *
...
1..1
# tests 1
# pass 1
# fail 0
# cancelled 0
# skipped 0
# todo 0
# duration_ms *

0 comments on commit 0040030

Please sign in to comment.