-
Notifications
You must be signed in to change notification settings - Fork 29.8k
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
test, tools: add common.noop and common.mustNotCall lint rule #12027
Conversation
@@ -0,0 +1,31 @@ | |||
/** | |||
* @fileoverview Prefer common.mustNotCall(msg) |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Nit: Indicate what you are preferring it over. Maybe Prefer common.mustNotCall(msg) over common.mustCall(fn, 0)
or whatever.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
(Ah, I see it's also in the message supplied to the user. Might not be terrible to put it in the comment overview too, though.)
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Done!
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Seems good to me.
CI: https://ci.nodejs.org/job/node-test-pull-request/7027/
(LGTM but I'd like more eyes, large changes XD)
if (node.callee.property && | ||
node.callee.property.name === 'mustCall') { | ||
if (node.arguments.length >= 2) { | ||
if (node.arguments[1].value == 0) { |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Are you using nested ifs instead of lots of &&
because it looks cleaner?
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Could you at least break these out into one or more helper functions (isCommonMethod()
, isMustCall()
)?
cc/ @not-an-aardvark, @silverwind, @targos for the eslint side |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Linter rule LGTM
if (node.callee.property && | ||
node.callee.property.name === 'mustCall') { | ||
if (node.arguments.length >= 2) { | ||
if (node.arguments[1].value == 0) { |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Could you at least break these out into one or more helper functions (isCommonMethod()
, isMustCall()
)?
@cjihrig ... updated! new and improved! |
Beautiful. One thing I just noticed - do you think it's worth adjusting the argument checking in the lint rule, since |
Good point lol |
Out of interest, is there a reason to allow |
The point is that |
Export a new common.noop no-operation function for general use. Allow using common.mustCall() without a fn argument to simplify test cases. Replace various non-op functions throughout tests with common.noop
Prefer using `common.mustNotCall()` over `common.mustCall(fn, 0)`
@cjihrig ... updated to catch |
The rule LGTM. I didn't re-review everything else. I'm assuming that part didn't change. |
Only CI failure is unrelated. |
Export a new common.noop no-operation function for general use. Allow using common.mustCall() without a fn argument to simplify test cases. Replace various non-op functions throughout tests with common.noop PR-URL: #12027 Reviewed-By: Jeremiah Senkpiel <[email protected]> Reviewed-By: Richard Lau <[email protected]> Reviewed-By: Gibson Fahnestock <[email protected]> Reviewed-By: Teddy Katz <[email protected]> Reviewed-By: Colin Ihrig <[email protected]> Reviewed-By: Franziska Hinkelmann <[email protected]>
Prefer using `common.mustNotCall()` over `common.mustCall(fn, 0)` PR-URL: #12027 Reviewed-By: Jeremiah Senkpiel <[email protected]> Reviewed-By: Richard Lau <[email protected]> Reviewed-By: Gibson Fahnestock <[email protected]> Reviewed-By: Teddy Katz <[email protected]> Reviewed-By: Colin Ihrig <[email protected]> Reviewed-By: Franziska Hinkelmann <[email protected]>
Landed in 4f2e372...20b1823 |
This will need to be manually backported to v7.x |
ping @jasnell one more time for backport |
Export a new common.noop no-operation function for general use. Allow using common.mustCall() without a fn argument to simplify test cases. Replace various non-op functions throughout tests with common.noop PR-URL: #12027 Reviewed-By: Jeremiah Senkpiel <[email protected]> Reviewed-By: Richard Lau <[email protected]> Reviewed-By: Gibson Fahnestock <[email protected]> Reviewed-By: Teddy Katz <[email protected]> Reviewed-By: Colin Ihrig <[email protected]> Reviewed-By: Franziska Hinkelmann <[email protected]>
Prefer using `common.mustNotCall()` over `common.mustCall(fn, 0)` PR-URL: #12027 Reviewed-By: Jeremiah Senkpiel <[email protected]> Reviewed-By: Richard Lau <[email protected]> Reviewed-By: Gibson Fahnestock <[email protected]> Reviewed-By: Teddy Katz <[email protected]> Reviewed-By: Colin Ihrig <[email protected]> Reviewed-By: Franziska Hinkelmann <[email protected]>
Export a new common.noop no-operation function for general use. Allow using common.mustCall() without a fn argument to simplify test cases. Replace various non-op functions throughout tests with common.noop PR-URL: #12027 Reviewed-By: Jeremiah Senkpiel <[email protected]> Reviewed-By: Richard Lau <[email protected]> Reviewed-By: Gibson Fahnestock <[email protected]> Reviewed-By: Teddy Katz <[email protected]> Reviewed-By: Colin Ihrig <[email protected]> Reviewed-By: Franziska Hinkelmann <[email protected]>
Prefer using `common.mustNotCall()` over `common.mustCall(fn, 0)` PR-URL: #12027 Reviewed-By: Jeremiah Senkpiel <[email protected]> Reviewed-By: Richard Lau <[email protected]> Reviewed-By: Gibson Fahnestock <[email protected]> Reviewed-By: Teddy Katz <[email protected]> Reviewed-By: Colin Ihrig <[email protected]> Reviewed-By: Franziska Hinkelmann <[email protected]>
Throughout the tests, creation of non-op functions is fairly extensive, and it is not uncommon to find
common.mustCall(() => {})
orcommon.mustCall(function() {})
, ornoop = () => {};
type declarations throughout.This PR introduces a
common.noop
non-op function that is used as an alternative to redeclaring nonops all the time.The
common.mustCall()
method is also modified such that thefn
argument defaults tocommon.noop
ifundefined
, making it unnecessary to pass in a function when a nonop is needed.There were also a couple of places where
common.mustCall(fn, 0)
was used to identify a function that should not be called. These are replace withcommon.mustNotCall()
and a lint rule is added.Checklist
make -j4 test
(UNIX), orvcbuild test
(Windows) passesAffected core subsystem(s)
test, tools