test_runner: emit start event when subtest starts#47797
test_runner: emit start event when subtest starts#47797sankalp1999 wants to merge 8 commits intonodejs:mainfrom
Conversation
|
Review requested:
|
|
@MoLow I request your review. |
If code changes look fine, can proceed with doc changes and tests (a file pointer would be helpful in this case) |
lib/internal/test_runner/test.js
Outdated
| } | ||
|
|
||
| async run() { | ||
|
|
| } | ||
| } | ||
|
|
||
| begin(nesting, file, testNumber, name, details, directive) { |
There was a problem hiding this comment.
does anything call this method?
I would start by adding this method to this test file, then make sure it passes
There was a problem hiding this comment.
no this is the new event so, not called anywhere yet.
| } | ||
|
|
||
| begin(nesting, file, testNumber, name, details, directive) { | ||
| this.#emit('test:begin', { __proto__: null, name, nesting, file, testNumber, details, ...directive }); |
There was a problem hiding this comment.
Just throwing an idea out there: having both begin and start is confusing. I could also picture people asking for more of these lifecycle events. I would namespace this event further and name it test:lifecycle:run, where lifecycle can be used to indicate what is happening in the test runner and is less about reporting results.
|
@sankalp1999 are you still working on this? |
|
@cjihrig apologise, got busy with other stuff. Getting back to try this next. |
|
|
||
| begin(nesting, file, testNumber, name, details, directive) { | ||
| this.#emit('test:lifecycle:run', { __proto__: null, name, nesting, file, testNumber, details, ...directive }); | ||
| } |
There was a problem hiding this comment.
can remove ...directive I guess
|
Ok I saw upstream has changed significantly. |
emit a start event to show message just after a test/subtest start Fixes: nodejs#46727
This commit implements the start event in tests_stream.js and removes the code that was altering TAP output in test.js
ee93ebc to
d4b38f6
Compare
| } | ||
| } | ||
|
|
||
| begin(nesting, file, testNumber, name, details) { |
There was a problem hiding this comment.
| begin(nesting, file, testNumber, name, details) { | |
| lifecycleRun(nesting, file, testNumber, name, details) { |
| 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+}$/); |
There was a problem hiding this comment.
| 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+}$/); |
there should be a deterministic number of tests running
|
there seem to be related test failures |
lib/internal/test_runner/test.js
Outdated
| 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'); |
There was a problem hiding this comment.
will remove comments in next commit if CI passes.
|
CI was passing. Removed the comments. I think I can proceed with the doc changes as well. |
85a46a4 to
f7dbe8a
Compare
| } | ||
|
|
||
| async run() { | ||
|
|
| return deferred.promise; | ||
| } | ||
|
|
||
| this.reporter.lifecycleRun(this.nesting, kFilename, this.testNumber, this.name, 'starting', 'starting'); |
There was a problem hiding this comment.
I think this should be emitted before the if
| } | ||
|
|
||
| lifecycleRun(nesting, file, testNumber, name, details) { | ||
| this[kEmitMessage]('test:lifecycle:run', { __proto__: null, name, nesting, file, testNumber, details }); |
There was a problem hiding this comment.
I think test:enqueue is a better name, @cjihrig WDYT?
There was a problem hiding this comment.
I don't feel too strongly, but I wouldn't say "enqueue" just rolls off the tongue.
There was a problem hiding this comment.
I agree, but in terms of distinction from test:start I think it is much better than test:lifecycle:run
emit a start event to show message just after a test/subtest start
Fixes: #46727