From a24f544a97655e3559aa1cf0f58ee3d598d93f47 Mon Sep 17 00:00:00 2001 From: sankalp1999 Date: Mon, 1 May 2023 15:52:29 +0530 Subject: [PATCH 1/8] test_runner: emit start event when subtest starts emit a start event to show message just after a test/subtest start Fixes: https://github.com/nodejs/node/issues/46727 --- lib/internal/test_runner/test.js | 3 +++ 1 file changed, 3 insertions(+) diff --git a/lib/internal/test_runner/test.js b/lib/internal/test_runner/test.js index ea6578e53f666a..a92dcf1a57c03c 100644 --- a/lib/internal/test_runner/test.js +++ b/lib/internal/test_runner/test.js @@ -515,6 +515,9 @@ class Test extends AsyncResource { } async run() { + + this.reporter.start(this.nesting, kFilename, this.name + " starting... "); + if (this.parent !== null) { this.parent.activeSubtests++; } From 7158d9dfdf3fc503d81625884660746373354cf8 Mon Sep 17 00:00:00 2001 From: sankalp1999 Date: Tue, 2 May 2023 16:21:42 +0530 Subject: [PATCH 2/8] test_runner: implement start event in tests_stream.js This commit implements the start event in tests_stream.js and removes the code that was altering TAP output in test.js --- lib/internal/test_runner/test.js | 2 -- lib/internal/test_runner/tests_stream.js | 4 ++++ 2 files changed, 4 insertions(+), 2 deletions(-) diff --git a/lib/internal/test_runner/test.js b/lib/internal/test_runner/test.js index a92dcf1a57c03c..6eeadb6f001afc 100644 --- a/lib/internal/test_runner/test.js +++ b/lib/internal/test_runner/test.js @@ -516,8 +516,6 @@ class Test extends AsyncResource { async run() { - this.reporter.start(this.nesting, kFilename, this.name + " starting... "); - if (this.parent !== null) { this.parent.activeSubtests++; } diff --git a/lib/internal/test_runner/tests_stream.js b/lib/internal/test_runner/tests_stream.js index 89fff7f28e586c..3650a22282c804 100644 --- a/lib/internal/test_runner/tests_stream.js +++ b/lib/internal/test_runner/tests_stream.js @@ -29,6 +29,10 @@ class TestsStream extends Readable { } } + begin(nesting, file, testNumber, name, details, directive) { + this.#emit('test:begin', { __proto__: null, name, nesting, file, testNumber, details, ...directive }); + } + fail(nesting, file, testNumber, name, details, directive) { this[kEmitMessage]('test:fail', { __proto__: null, name, nesting, file, testNumber, details, ...directive }); } From a500692233ab61dd1e44fbd9ccec94182d61191e Mon Sep 17 00:00:00 2001 From: sankalp1999 Date: Fri, 12 May 2023 21:20:04 +0530 Subject: [PATCH 3/8] test_runner: revert the first commit --- lib/internal/test_runner/test.js | 1 - 1 file changed, 1 deletion(-) diff --git a/lib/internal/test_runner/test.js b/lib/internal/test_runner/test.js index 6eeadb6f001afc..ea6578e53f666a 100644 --- a/lib/internal/test_runner/test.js +++ b/lib/internal/test_runner/test.js @@ -515,7 +515,6 @@ class Test extends AsyncResource { } async run() { - if (this.parent !== null) { this.parent.activeSubtests++; } From b2e8085860308c47e8318b9fcb32e3cfc3a71a6a Mon Sep 17 00:00:00 2001 From: sankalp1999 Date: Thu, 25 May 2023 19:54:40 +0530 Subject: [PATCH 4/8] test_runner: add lifecycle:run call and make tests pass --- lib/internal/test_runner/test.js | 1 + lib/internal/test_runner/tests_stream.js | 2 +- test/parallel/test-runner-reporters.js | 6 +++--- 3 files changed, 5 insertions(+), 4 deletions(-) diff --git a/lib/internal/test_runner/test.js b/lib/internal/test_runner/test.js index ea6578e53f666a..22e55a2b1da660 100644 --- a/lib/internal/test_runner/test.js +++ b/lib/internal/test_runner/test.js @@ -189,6 +189,7 @@ class Test extends AsyncResource { this.nesting = 0; this.only = testOnlyFlag; this.reporter = new TestsStream(); + this.reporter.begin(this.nesting, kFilename, this.testNumber, this.name, "starting", "starting"); this.runOnlySubtests = this.only; this.testNumber = 0; this.timeout = kDefaultTimeout; diff --git a/lib/internal/test_runner/tests_stream.js b/lib/internal/test_runner/tests_stream.js index 3650a22282c804..1845a4175258c6 100644 --- a/lib/internal/test_runner/tests_stream.js +++ b/lib/internal/test_runner/tests_stream.js @@ -30,7 +30,7 @@ class TestsStream extends Readable { } begin(nesting, file, testNumber, name, details, directive) { - this.#emit('test:begin', { __proto__: null, name, nesting, file, testNumber, details, ...directive }); + this.#emit('test:lifecycle:run', { __proto__: null, name, nesting, file, testNumber, details, ...directive }); } fail(nesting, file, testNumber, name, details, directive) { diff --git a/test/parallel/test-runner-reporters.js b/test/parallel/test-runner-reporters.js index a9746733fe6975..f90942861b89e1 100644 --- a/test/parallel/test-runner-reporters.js +++ b/test/parallel/test-runner-reporters.js @@ -97,7 +97,7 @@ describe('node:test reporters', { concurrency: true }, () => { testFile]); assert.strictEqual(child.stderr.toString(), ''); const stdout = child.stdout.toString(); - assert.match(stdout, /{"test:start":4,"test:pass":2,"test:fail":2,"test:plan":2,"test:diagnostic":\d+}$/); + assert.match(stdout, /{"test:lifecycle:run":\d+,"test:start":4,"test:pass":2,"test:fail":2,"test:plan":2,"test:diagnostic":\d+}$/); assert.strictEqual(stdout.slice(0, filename.length + 2), `${filename} {`); }); }); @@ -109,7 +109,7 @@ describe('node:test reporters', { concurrency: true }, () => { assert.strictEqual(child.stderr.toString(), ''); assert.match( child.stdout.toString(), - /^package: reporter-cjs{"test:start":4,"test:pass":2,"test:fail":2,"test:plan":2,"test:diagnostic":\d+}$/, + /^package: reporter-cjs{"test:lifecycle:run":\d+,"test:start":4,"test:pass":2,"test:fail":2,"test:plan":2,"test:diagnostic":\d+}$/, ); }); @@ -120,7 +120,7 @@ describe('node:test reporters', { concurrency: true }, () => { assert.strictEqual(child.stderr.toString(), ''); assert.match( child.stdout.toString(), - /^package: reporter-esm{"test:start":4,"test:pass":2,"test:fail":2,"test:plan":2,"test:diagnostic":\d+}$/, + /^package: reporter-esm{"test:lifecycle:run":\d+,"test:start":4,"test:pass":2,"test:fail":2,"test:plan":2,"test:diagnostic":\d+}$/, ); }); From f4e13b5d7d08134033b56d215effa1eed457a666 Mon Sep 17 00:00:00 2001 From: sankalp1999 Date: Thu, 25 May 2023 20:29:02 +0530 Subject: [PATCH 5/8] test_runner:add test:lifecycle:run event at run() --- lib/internal/test_runner/test.js | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/lib/internal/test_runner/test.js b/lib/internal/test_runner/test.js index 22e55a2b1da660..aedf33fe96ef23 100644 --- a/lib/internal/test_runner/test.js +++ b/lib/internal/test_runner/test.js @@ -189,7 +189,7 @@ class Test extends AsyncResource { this.nesting = 0; this.only = testOnlyFlag; this.reporter = new TestsStream(); - this.reporter.begin(this.nesting, kFilename, this.testNumber, this.name, "starting", "starting"); + this.reporter.begin(this.nesting, kFilename, this.testNumber, this.name, 'starting', 'starting'); this.runOnlySubtests = this.only; this.testNumber = 0; this.timeout = kDefaultTimeout; @@ -783,6 +783,8 @@ class Suite extends Test { } async run() { + this.reporter.begin(this.nesting, kFilename, this.testNumber, this.name, 'starting', 'starting'); + const hookArgs = this.getRunArgs(); try { From d4b38f647dc05580e5decb4f7fdfdb2f9cf9f724 Mon Sep 17 00:00:00 2001 From: sankalp1999 Date: Thu, 25 May 2023 22:37:07 +0530 Subject: [PATCH 6/8] test_runner: rebase and refactor --- lib/internal/test_runner/tests_stream.js | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/lib/internal/test_runner/tests_stream.js b/lib/internal/test_runner/tests_stream.js index 1845a4175258c6..88e537cf758d26 100644 --- a/lib/internal/test_runner/tests_stream.js +++ b/lib/internal/test_runner/tests_stream.js @@ -29,8 +29,8 @@ class TestsStream extends Readable { } } - begin(nesting, file, testNumber, name, details, directive) { - this.#emit('test:lifecycle:run', { __proto__: null, name, nesting, file, testNumber, details, ...directive }); + begin(nesting, file, testNumber, name, details) { + this[kEmitMessage]('test:lifecycle:run', { __proto__: null, name, nesting, file, testNumber, details }); } fail(nesting, file, testNumber, name, details, directive) { From 9033855a28906a11650559c7a4dba1d66781a62a Mon Sep 17 00:00:00 2001 From: sankalp1999 Date: Mon, 29 May 2023 20:51:14 +0530 Subject: [PATCH 7/8] test_runner: move method to start(), fix tests --- lib/internal/test_runner/test.js | 6 +++--- lib/internal/test_runner/tests_stream.js | 2 +- test/parallel/test-runner-reporters.js | 4 ++-- 3 files changed, 6 insertions(+), 6 deletions(-) diff --git a/lib/internal/test_runner/test.js b/lib/internal/test_runner/test.js index aedf33fe96ef23..601ce2061fa8dd 100644 --- a/lib/internal/test_runner/test.js +++ b/lib/internal/test_runner/test.js @@ -189,7 +189,7 @@ class Test extends AsyncResource { this.nesting = 0; this.only = testOnlyFlag; this.reporter = new TestsStream(); - this.reporter.begin(this.nesting, kFilename, this.testNumber, this.name, 'starting', 'starting'); + // this.reporter.lifecycleRun(this.nesting, kFilename, this.testNumber, this.name, 'starting', 'starting'); this.runOnlySubtests = this.only; this.testNumber = 0; this.timeout = kDefaultTimeout; @@ -479,7 +479,7 @@ class Test extends AsyncResource { this.parent.addPendingSubtest(deferred); return deferred.promise; } - + this.reporter.lifecycleRun(this.nesting, kFilename, this.testNumber, this.name, 'starting', 'starting'); return this.run(); } @@ -783,7 +783,7 @@ class Suite extends Test { } async run() { - this.reporter.begin(this.nesting, kFilename, this.testNumber, this.name, 'starting', 'starting'); + // this.reporter.lifecycleRun(this.nesting, kFilename, this.testNumber, this.name, 'starting', 'starting'); const hookArgs = this.getRunArgs(); diff --git a/lib/internal/test_runner/tests_stream.js b/lib/internal/test_runner/tests_stream.js index 88e537cf758d26..1fef38e193b32c 100644 --- a/lib/internal/test_runner/tests_stream.js +++ b/lib/internal/test_runner/tests_stream.js @@ -29,7 +29,7 @@ class TestsStream extends Readable { } } - begin(nesting, file, testNumber, name, details) { + lifecycleRun(nesting, file, testNumber, name, details) { this[kEmitMessage]('test:lifecycle:run', { __proto__: null, name, nesting, file, testNumber, details }); } diff --git a/test/parallel/test-runner-reporters.js b/test/parallel/test-runner-reporters.js index f90942861b89e1..d14062e54bc042 100644 --- a/test/parallel/test-runner-reporters.js +++ b/test/parallel/test-runner-reporters.js @@ -97,7 +97,7 @@ describe('node:test reporters', { concurrency: true }, () => { testFile]); assert.strictEqual(child.stderr.toString(), ''); const stdout = child.stdout.toString(); - assert.match(stdout, /{"test:lifecycle:run":\d+,"test:start":4,"test:pass":2,"test:fail":2,"test:plan":2,"test:diagnostic":\d+}$/); + assert.match(stdout, /{"test:lifecycle:run":4,"test:start":4,"test:pass":2,"test:fail":2,"test:plan":2,"test:diagnostic":\d+}$/); assert.strictEqual(stdout.slice(0, filename.length + 2), `${filename} {`); }); }); @@ -109,7 +109,7 @@ describe('node:test reporters', { concurrency: true }, () => { assert.strictEqual(child.stderr.toString(), ''); assert.match( child.stdout.toString(), - /^package: reporter-cjs{"test:lifecycle:run":\d+,"test:start":4,"test:pass":2,"test:fail":2,"test:plan":2,"test:diagnostic":\d+}$/, + /^package: reporter-cjs{"test:lifecycle:run":4,"test:start":4,"test:pass":2,"test:fail":2,"test:plan":2,"test:diagnostic":\d+}$/, ); }); From f7dbe8a765c33beb19e090da0bb80668e8ee374d Mon Sep 17 00:00:00 2001 From: sankalp1999 Date: Tue, 30 May 2023 14:47:23 +0530 Subject: [PATCH 8/8] test_runner: remove comments and extra line --- lib/internal/test_runner/test.js | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/lib/internal/test_runner/test.js b/lib/internal/test_runner/test.js index 601ce2061fa8dd..e80da5e334c44c 100644 --- a/lib/internal/test_runner/test.js +++ b/lib/internal/test_runner/test.js @@ -189,7 +189,6 @@ class Test extends AsyncResource { this.nesting = 0; this.only = testOnlyFlag; this.reporter = new TestsStream(); - // this.reporter.lifecycleRun(this.nesting, kFilename, this.testNumber, this.name, 'starting', 'starting'); this.runOnlySubtests = this.only; this.testNumber = 0; this.timeout = kDefaultTimeout; @@ -783,7 +782,7 @@ class Suite extends Test { } async run() { - // this.reporter.lifecycleRun(this.nesting, kFilename, this.testNumber, this.name, 'starting', 'starting'); + const hookArgs = this.getRunArgs();