Skip to content

Conversation

@sankalp1999
Copy link
Contributor

emit a start event to show message just after a test/subtest start

Fixes: #46727

@nodejs-github-bot
Copy link
Collaborator

Review requested:

  • @nodejs/test_runner

@nodejs-github-botnodejs-github-bot added dont-land-on-v14.x needs-ci PRs that need a full CI run. test_runner Issues and PRs related to the test runner subsystem. labels May 1, 2023
@sankalp1999sankalp1999 marked this pull request as draft May 1, 2023 10:46
@sankalp1999
Copy link
ContributorAuthor

@MoLow I request your review.

@sankalp1999
Copy link
ContributorAuthor

sankalp1999 commented May 9, 2023

Thanks @MoLow. I have made a test:begin (name_to_be_decided) event in the test_streams file since test:start is already being used.

Not sure if I need to make changes in the textual output in the reporters as you mentioned "this means the event will only be usable through the run API but not via one of the existing reporters"

@MoLow
(#46727 (comment))

If code changes look fine, can proceed with doc changes and tests (a file pointer would be helpful in this case)

@sankalp1999sankalp1999 marked this pull request as ready for review May 9, 2023 17:21
}

asyncrun(){

Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

please revert unrelated change

}
}

begin(nesting,file,testNumber,name,details,directive){
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

does anything call this method?
I would start by adding this method to this test file, then make sure it passes

assert.match(stdout,/{"test:start":4,"test:pass":2,"test:fail":2,"test:plan":2,"test:diagnostic":\d+}$/);

Copy link
ContributorAuthor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

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});
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

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.

@cjihrig
Copy link
Contributor

@sankalp1999 are you still working on this?

@sankalp1999
Copy link
ContributorAuthor

sankalp1999 commented May 25, 2023

@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});
}
Copy link
ContributorAuthor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

can remove ...directive I guess

@sankalp1999
Copy link
ContributorAuthor

Ok I saw upstream has changed significantly.

@sankalp1999sankalp1999force-pushed the test-runner-start-event branch from ee93ebc to d4b38f6CompareMay 25, 2023 17:08
}
}

begin(nesting,file,testNumber,name,details){
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Suggested change
begin(nesting,file,testNumber,name,details){
lifecycleRun(nesting,file,testNumber,name,details){

assert.strictEqual(child.stderr.toString(),'');
conststdout=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+}$/);
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Suggested change
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

@MoLow
Copy link
Member

there seem to be related test failures

this.only=testOnlyFlag;
this.reporter=newTestsStream();
this.reporter.begin(this.nesting,kFilename,this.testNumber,this.name,'starting','starting');
// this.reporter.lifecycleRun(this.nesting, kFilename, this.testNumber, this.name, 'starting', 'starting');
Copy link
ContributorAuthor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

will remove comments in next commit if CI passes.

@sankalp1999
Copy link
ContributorAuthor

CI was passing. Removed the comments.

I think I can proceed with the doc changes as well.

@sankalp1999sankalp1999force-pushed the test-runner-start-event branch from 85a46a4 to f7dbe8aCompareMay 30, 2023 09:21
}

asyncrun(){

Copy link
Member

@MoLowMoLowMay 30, 2023

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

please revert

returndeferred.promise;
}

this.reporter.lifecycleRun(this.nesting,kFilename,this.testNumber,this.name,'starting','starting');
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

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 });
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I think test:enqueue is a better name, @cjihrig WDYT?

Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I don't feel too strongly, but I wouldn't say "enqueue" just rolls off the tongue.

Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I agree, but in terms of distinction from test:start I think it is much better than test:lifecycle:run

Sign up for freeto join this conversation on GitHub. Already have an account? Sign in to comment

Labels

needs-ciPRs that need a full CI run.test_runnerIssues and PRs related to the test runner subsystem.

Projects

None yet

Development

Successfully merging this pull request may close these issues.

Indicate when a test is started in test_runner

5 participants

@sankalp1999@nodejs-github-bot@cjihrig@MoLow@targos