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
fix: throw error for first unmatched pattern #16533
Conversation
✅ Deploy Preview for docs-eslint canceled.
|
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.
LGTM. I'll leave it open in case someone else wants to review it.
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.
Code and result looks okay, but I think may need a bit of refactoring for clarity.
* any files and `errorOnUnmatchedPattern` is true. | ||
* @throws {AllFilesIgnoredError} If there is a pattern that matches files | ||
* when there are no ignores. | ||
* @param {Array<string>} options.unmatchedPatterns A non-empty array of glob patterns |
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.
If we only need the first item, why pass the whole array?
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.
I thought about passing in just the first item, but in the end I decided that it might make more sense to just pass all the data from the search and let throwErrorForUnmatchedPatterns
construct the error from that, so that all the logic about what needs to be checked further and what information will the error contain is in throwErrorForUnmatchedPatterns
.
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.
Fair enough.
Co-authored-by: Nicholas C. Zakas <nicholas@humanwhocodes.com>
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.
LGTM
This PR contains the following updates: | Package | Type | Update | Change | |---|---|---|---| | [eslint](https://eslint.org) ([source](https://github.com/eslint/eslint)) | devDependencies | minor | [`8.27.0` -> `8.28.0`](https://renovatebot.com/diffs/npm/eslint/8.27.0/8.28.0) | --- ### Release Notes <details> <summary>eslint/eslint</summary> ### [`v8.28.0`](https://github.com/eslint/eslint/releases/tag/v8.28.0) [Compare Source](eslint/eslint@v8.27.0...v8.28.0) #### Features - [`63bce44`](eslint/eslint@63bce44) feat: add `ignoreClassFieldInitialValues` option to no-magic-numbers ([#​16539](eslint/eslint#16539)) (Milos Djermanovic) - [`8385ecd`](eslint/eslint@8385ecd) feat: multiline properties in rule `key-spacing` with option `align` ([#​16532](eslint/eslint#16532)) (Francesco Trotta) - [`a4e89db`](eslint/eslint@a4e89db) feat: `no-obj-calls` support `Intl` ([#​16543](eslint/eslint#16543)) (Sosuke Suzuki) #### Bug Fixes - [`c50ae4f`](eslint/eslint@c50ae4f) fix: Ensure that dot files are found with globs. ([#​16550](eslint/eslint#16550)) (Nicholas C. Zakas) - [`9432b67`](eslint/eslint@9432b67) fix: throw error for first unmatched pattern ([#​16533](eslint/eslint#16533)) (Milos Djermanovic) - [`e76c382`](eslint/eslint@e76c382) fix: allow `* 1` when followed by `/` in no-implicit-coercion ([#​16522](eslint/eslint#16522)) (Milos Djermanovic) #### Documentation - [`34c05a7`](eslint/eslint@34c05a7) docs: Language Options page intro and tweaks ([#​16511](eslint/eslint#16511)) (Ben Perlmutter) - [`3e66387`](eslint/eslint@3e66387) docs: add intro and edit ignoring files page ([#​16510](eslint/eslint#16510)) (Ben Perlmutter) - [`436f712`](eslint/eslint@436f712) docs: fix Header UI inconsistency ([#​16464](eslint/eslint#16464)) (Tanuj Kanti) - [`f743816`](eslint/eslint@f743816) docs: switch to wrench emoji for auto-fixable rules ([#​16545](eslint/eslint#16545)) (Bryan Mishkin) - [`bc0547e`](eslint/eslint@bc0547e) docs: improve styles for versions and languages page ([#​16553](eslint/eslint#16553)) (Nitin Kumar) - [`6070f58`](eslint/eslint@6070f58) docs: clarify esquery issue workaround ([#​16556](eslint/eslint#16556)) (Milos Djermanovic) - [`b48e4f8`](eslint/eslint@b48e4f8) docs: Command Line Interface intro and tweaks ([#​16535](eslint/eslint#16535)) (Ben Perlmutter) - [`b92b30f`](eslint/eslint@b92b30f) docs: Add Rules page intro and content tweaks ([#​16523](eslint/eslint#16523)) (Ben Perlmutter) - [`1769b42`](eslint/eslint@1769b42) docs: Integrations page introduction ([#​16548](eslint/eslint#16548)) (Ben Perlmutter) - [`a8d0a57`](eslint/eslint@a8d0a57) docs: make table of contents sticky on desktop ([#​16506](eslint/eslint#16506)) (Sam Chen) - [`a01315a`](eslint/eslint@a01315a) docs: fix route of japanese translation site ([#​16542](eslint/eslint#16542)) (Tanuj Kanti) - [`0515628`](eslint/eslint@0515628) docs: use emoji instead of svg for deprecated rule ([#​16536](eslint/eslint#16536)) (Bryan Mishkin) - [`68f1288`](eslint/eslint@68f1288) docs: set default layouts ([#​16484](eslint/eslint#16484)) (Percy Ma) - [`776827a`](eslint/eslint@776827a) docs: init config about specifying shared configs ([#​16483](eslint/eslint#16483)) (Percy Ma) - [`5c39425`](eslint/eslint@5c39425) docs: fix broken link to plugins ([#​16520](eslint/eslint#16520)) (Ádám T. Nagy) - [`c97c789`](eslint/eslint@c97c789) docs: Add missing no-new-native-nonconstructor docs code fence ([#​16503](eslint/eslint#16503)) (Brandon Mills) #### Chores - [`e94a4a9`](eslint/eslint@e94a4a9) chore: Add tests to verify [#​16038](eslint/eslint#16038) is fixed ([#​16538](eslint/eslint#16538)) (Nicholas C. Zakas) - [`e13f194`](eslint/eslint@e13f194) chore: stricter validation of `meta.docs.description` in core rules ([#​16529](eslint/eslint#16529)) (Milos Djermanovic) - [`72dbfbc`](eslint/eslint@72dbfbc) chore: use `pkg` parameter in `getNpmPackageVersion` ([#​16525](eslint/eslint#16525)) (webxmsj) </details> --- ### Configuration 📅 **Schedule**: Branch creation - At any time (no schedule defined), Automerge - At any time (no schedule defined). 🚦 **Automerge**: Disabled by config. Please merge this manually once you are satisfied. ♻ **Rebasing**: Whenever PR becomes conflicted, or you tick the rebase/retry checkbox. 🔕 **Ignore**: Close this PR and you won't be reminded about this update again. --- - [ ] <!-- rebase-check -->If you want to rebase/retry this PR, check this box --- This PR has been generated by [Renovate Bot](https://github.com/renovatebot/renovate). <!--renovate-debug:eyJjcmVhdGVkSW5WZXIiOiIzNC4yOS4xIiwidXBkYXRlZEluVmVyIjoiMzQuNDAuMCJ9--> Co-authored-by: cabr2-bot <cabr2.help@gmail.com> Reviewed-on: https://codeberg.org/Calciumdibromid/CaBr2/pulls/1652 Reviewed-by: Epsilon_02 <epsilon_02@noreply.codeberg.org> Co-authored-by: Calciumdibromid Bot <cabr2_bot@noreply.codeberg.org> Co-committed-by: Calciumdibromid Bot <cabr2_bot@noreply.codeberg.org>
Prerequisites checklist
What is the purpose of this pull request? (put an "X" next to an item)
[ ] Documentation update
[x] Bug fix (template)
[ ] New rule (template)
[ ] Changes an existing rule (template)
[ ] Add autofix to a rule
[ ] Add a CLI option
[ ] Add something to the core
[ ] Other, please explain:
Addresses #16462 (review).
When there are multiple unmatched patterns, both ESLint and FlatESLint throw an error containing information about only one pattern. The error can be either that the pattern doesn't match any files or that it matches only ignored files.
The difference is that ESLint always throws an error for the very first unmatched pattern, while FlatESLint first checks if there are patterns that match ignored files.
To reproduce, run
eslint "doesnotexist/*.js" "tests/fixtures/*.js"
.ESLint:
FlatESLint:
It's an error either way, but I think ESLint behavior is preferable as it would be surprising for users that after fixing or removing the reported pattern, eslint in the next run reports an error for a preceding pattern. Checking only the first pattern also simplifies the code a bit, and is better for performance in this, albeit exceptional, scenario.
What changes did you make? (Give an overview)
I changed the code in
eslint-helpers
to always check only the first unmatched pattern.Is there anything you'd like reviewers to focus on?