-
-
Notifications
You must be signed in to change notification settings - Fork 522
Sniffs: add tests for namespaced names #2620
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
Conversation
jrfnl
left a comment
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.
Thanks for setting up this PR @rodrigoprimo !
Similar to previous remarks in other PRs:
- The
NonceVerificationsniff is also handling other function calls, likearray_key_exists(),is_string()etc to prevent false positives/negatives.
These also need tests for the variations of namespaced names.
I suggest you have a good look at theneeds_nonce_check()method. ValidHookName: missing tests for the variations of namespaced names for the target functions themselves (do_action()etc).PrefixAllGlobals: I have a feeling (but haven't verified) that test case file 3 needs additional tests for theextends...PrefixAllGlobals: is missing tests for the variations of namespaced names for the hook functions.CronInterval: is missing tests for the variations of namespaced names for first class callables in the$callbackparameter.
Other than that:
PrefixAllGlobals: I've confirmed thatdefine()in combination with variations of the namespaced names in the string for the constant name is sufficiently covered by tests already (line 311-315 in test case file 1)DiscouragedConstants: verified that the "use of global constant" in all variations of namespaced names is covered sufficiently.
d72fe47 to
521f28c
Compare
|
Thanks for the review, @jrfnl! I added new commits, one per sniff. My idea is that those commits are squashed into the corresponding original commit for each sniff. Let me know if you prefer that I do that (either before or after you review this PR again).
I don't recall exactly why I did not include them initially (if it was a decision not to include or because I'm adding tests to the utility methods that are used in
Done
I just added a test in a new commit for a fully qualified call to a global function, which is the only case that the sniff is handling correctly at the moment. For the other cases, I suggest creating an issue to address this separately, as currently the sniff does not handle them correctly. What do you think? |
|
@jrfnl, as we discussed during our call earlier today, I added new commits to this PR to ensure that the namespaced tests use different function names when possible and also to ensure that names with different cases are tested for both non-qualified and fully-qualified global function calls. |
jrfnl
left a comment
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.
@rodrigoprimo Just posting the CronInterval follow up comments so you can use them.
Will continue the review after these have been addressed.
c41adfb to
0f2d04b
Compare
jrfnl
left a comment
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.
Review status so far:
✅ NoSilencedErrors
✅ CronInterval
Rest still to be reviewed.
jrfnl
left a comment
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.
✅ DiscouragedConstants
jrfnl
left a comment
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.
✅ ValidHookName
jrfnl
left a comment
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.
✏️ PrefixAllGlobals
WordPress/Tests/NamingConventions/PrefixAllGlobalsUnitTest.3.inc
Outdated
Show resolved
Hide resolved
jrfnl
left a comment
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.
✅ PrefixAllGlobals
jrfnl
left a comment
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.
📝 NonceVerification - didn't finish the review as I can't see the code anymore through the comments.
026eb8a to
d0c2fb0
Compare
jrfnl
left a comment
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.
Looked the NonceVerification test over one more time
Definitely better, but this is a complex sniff, so we may still be missing some test variations, though I'm not sure that will be problematic for the migration to PHPCS 4.0.
The one thing which may still be good to cover via tests is the handling of a (global) user-defined customNonceVerificationFunctions when namespaced variations of that same function name are encountered. What do you think ?
jrfnl
left a comment
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.
✅ NonceVerification
jrfnl
left a comment
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.
🎉 Thanks for all your work on this @rodrigoprimo !
Would you like to rebase & squash the commits to atomic ones now ?
066934b to
7f6ff91
Compare
There were already a few tests with namespaced names, so this commit adds only what was missing in the existing tests.
Co-authored-by: Juliette <[email protected]>
Co-authored-by: Juliette <[email protected]>
Add tests safeguarding that namespaced calls to functions named `define` are handled correctly.
7f6ff91 to
b86f078
Compare
|
Thanks for reviewing this PR, @jrfnl!
Sure, I just did that and force pushed. |
Description
This PR is a continuation of #2581.
In preparation for PHPCS 4.0, which changes the tokenization of namespaced names, this PR adds tests with all variants of namespace names (unqualified, partially qualified, fully qualified, and namespace relative) to the following sniffs:
WordPress.Utils.I18nTextDomainFixer,WordPress.Security.NonceVerification,WordPress.NamingConventions.ValidHookName,WordPress.NamingConventions.PrefixAllGlobals,WordPress.PHP.NoSilencedErrors,WordPress.WP.CronInterval, andWordPress.WP.DiscouragedConstants.