Skip to content
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

feat(utils): add dependency constraint filtering for RuleTester #5750

Merged
merged 5 commits into from Oct 9, 2022

Conversation

bradzacher
Copy link
Member

@bradzacher bradzacher commented Oct 6, 2022

PR Checklist

Overview

While working on #5573 I realised that we need infrastructure that allows us to skip tests depending on dependency versions (i.e. the current ESLint or TS version).

This PR adds that functionality into our extended version of the RuleTester class.
You will be able to specify constraints like so:

ruleTester.run('my-rule', rule, {
  valid: [
    {
      code: 'const x = 1;',
      dependencyConstraints: {
        // enforces the semver ">=7.32.0"
        eslint: '7.32.0',

        // i also added this form which allows the user to fully control the semver.satisfies call
        'some-other-module': {
          type: 'semver',
          version: '~6',
          options: {
            includePrerelease: true,
          },
        },
      },
    },
  ],
  invalid: [
    {
      code: 'const x = 1;',
      errors: [ /* ... */ ],
      dependencyConstraints: {
        eslint: '7.32.0',
        // etc - same as above
      },
    },
  ],
});

@bradzacher bradzacher added the enhancement New feature or request label Oct 6, 2022
@nx-cloud
Copy link

nx-cloud bot commented Oct 6, 2022

☁️ Nx Cloud Report

CI is running/has finished running commands for commit 98b6eb4. As they complete they will appear below. Click to see the status, the terminal output, and the build insights.

📂 See all runs for this branch


✅ Successfully ran 47 targets

Sent with 💌 from NxCloud.

@typescript-eslint
Copy link
Contributor

Thanks for the PR, @bradzacher!

typescript-eslint is a 100% community driven project, and we are incredibly grateful that you are contributing to that community.

The core maintainers work on this in their personal time, so please understand that it may not be possible for them to review your work immediately.

Thanks again!


🙏 Please, if you or your company is finding typescript-eslint valuable, help us sustain the project by sponsoring it transparently on https://opencollective.com/typescript-eslint. As a thank you, your profile/company logo will be added to our main README which receives thousands of unique visitors per day.

@netlify
Copy link

netlify bot commented Oct 6, 2022

Deploy Preview for typescript-eslint ready!

Name Link
🔨 Latest commit 98b6eb4
🔍 Latest deploy log https://app.netlify.com/sites/typescript-eslint/deploys/6342746f4083cf0009129b9c
😎 Deploy Preview https://deploy-preview-5750--typescript-eslint.netlify.app
📱 Preview on mobile
Toggle QR Code...

QR Code

Use your smartphone camera to open QR code link.

To edit notification comments on pull requests, go to your Netlify site settings.

@codecov
Copy link

codecov bot commented Oct 6, 2022

Codecov Report

Merging #5750 (98b6eb4) into main (6477f38) will decrease coverage by 2.47%.
The diff coverage is 91.56%.

Additional details and impacted files
@@            Coverage Diff             @@
##             main    #5750      +/-   ##
==========================================
- Coverage   93.82%   91.34%   -2.48%     
==========================================
  Files         134      340     +206     
  Lines        1506    10561    +9055     
  Branches      226     3108    +2882     
==========================================
+ Hits         1413     9647    +8234     
- Misses         60      647     +587     
- Partials       33      267     +234     
Flag Coverage Δ
unittest 91.34% <91.56%> (-2.48%) ⬇️

Flags with carried forward coverage won't be shown. Click here to find out more.

Impacted Files Coverage Δ
...s/utils/src/eslint-utils/batchedSingleLineTests.ts 91.66% <ø> (ø)
packages/utils/src/ts-eslint/RuleTester.ts 100.00% <ø> (ø)
...s/utils/src/eslint-utils/rule-tester/RuleTester.ts 90.00% <90.00%> (ø)
packages/utils/src/eslint-utils/index.ts 100.00% <100.00%> (ø)
.../eslint-utils/rule-tester/dependencyConstraints.ts 100.00% <100.00%> (ø)
packages/utils/src/ts-eslint-scope/Scope.ts 52.17% <0.00%> (ø)
...es/eslint-plugin/src/rules/parameter-properties.ts 94.11% <0.00%> (ø)
...rc/rules/no-unnecessary-boolean-literal-compare.ts 90.36% <0.00%> (ø)
packages/utils/src/ts-eslint-scope/index.ts 100.00% <0.00%> (ø)
...utils/src/ast-utils/eslint-utils/PatternMatcher.ts 66.66% <0.00%> (ø)
... and 199 more

@bradzacher bradzacher force-pushed the rule-tester-dependency-constraints branch from a069dd8 to 74e5ba7 Compare October 6, 2022 11:09
@bradzacher bradzacher marked this pull request as ready for review October 6, 2022 11:19
Copy link
Member

@JoshuaKGoldberg JoshuaKGoldberg left a comment

Choose a reason for hiding this comment

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

LGTM in general, very nicely done! I'm pumped to unblock the version-specific issues blocked by #1752.

Just requesting changes on discussing simplifying the API, if we can?

@JoshuaKGoldberg JoshuaKGoldberg added the awaiting response Issues waiting for a reply from the OP or another party label Oct 6, 2022
@bradzacher bradzacher removed the awaiting response Issues waiting for a reply from the OP or another party label Oct 7, 2022
JoshuaKGoldberg
JoshuaKGoldberg previously approved these changes Oct 7, 2022
Copy link
Member

@JoshuaKGoldberg JoshuaKGoldberg left a comment

Choose a reason for hiding this comment

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

This is great, thanks @bradzacher! 🚀

…nts.ts

Co-authored-by: Josh Goldberg <git@joshuakgoldberg.com>
@bradzacher bradzacher merged commit 121f4c0 into main Oct 9, 2022
@bradzacher bradzacher deleted the rule-tester-dependency-constraints branch October 9, 2022 07:34
crapStone pushed a commit to Calciumdibromid/CaBr2 that referenced this pull request Oct 13, 2022
This PR contains the following updates:

| Package | Type | Update | Change |
|---|---|---|---|
| [@typescript-eslint/eslint-plugin](https://github.com/typescript-eslint/typescript-eslint) | devDependencies | minor | [`5.39.0` -> `5.40.0`](https://renovatebot.com/diffs/npm/@typescript-eslint%2feslint-plugin/5.39.0/5.40.0) |
| [@typescript-eslint/parser](https://github.com/typescript-eslint/typescript-eslint) | devDependencies | minor | [`5.39.0` -> `5.40.0`](https://renovatebot.com/diffs/npm/@typescript-eslint%2fparser/5.39.0/5.40.0) |

---

### Release Notes

<details>
<summary>typescript-eslint/typescript-eslint (@&#8203;typescript-eslint/eslint-plugin)</summary>

### [`v5.40.0`](https://github.com/typescript-eslint/typescript-eslint/blob/HEAD/packages/eslint-plugin/CHANGELOG.md#&#8203;5400-httpsgithubcomtypescript-eslinttypescript-eslintcomparev5390v5400-2022-10-10)

[Compare Source](typescript-eslint/typescript-eslint@v5.39.0...v5.40.0)

##### Bug Fixes

-   **eslint-plugin:** \[consistent-indexed-object-style] handle interface generic ([#&#8203;5746](typescript-eslint/typescript-eslint#5746)) ([7a8a0a3](typescript-eslint/typescript-eslint@7a8a0a3))
-   **eslint-plugin:** \[no-unnecessary-condition] handle void ([#&#8203;5766](typescript-eslint/typescript-eslint#5766)) ([ac8f06b](typescript-eslint/typescript-eslint@ac8f06b))

##### Features

-   **eslint-plugin:** Check 'rest' parameters in no-misused-promises ([#&#8203;5731](typescript-eslint/typescript-eslint#5731)) ([6477f38](typescript-eslint/typescript-eslint@6477f38)), closes [#&#8203;4015](typescript-eslint/typescript-eslint#4015)
-   **utils:** add dependency constraint filtering for `RuleTester` ([#&#8203;5750](typescript-eslint/typescript-eslint#5750)) ([121f4c0](typescript-eslint/typescript-eslint@121f4c0))

</details>

<details>
<summary>typescript-eslint/typescript-eslint (@&#8203;typescript-eslint/parser)</summary>

### [`v5.40.0`](https://github.com/typescript-eslint/typescript-eslint/blob/HEAD/packages/parser/CHANGELOG.md#&#8203;5400-httpsgithubcomtypescript-eslinttypescript-eslintcomparev5390v5400-2022-10-10)

[Compare Source](typescript-eslint/typescript-eslint@v5.39.0...v5.40.0)

**Note:** Version bump only for package [@&#8203;typescript-eslint/parser](https://github.com/typescript-eslint/parser)

</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 these updates again.

---

 - [ ] <!-- rebase-check -->If you want to rebase/retry this PR, click this checkbox.

---

This PR has been generated by [Renovate Bot](https://github.com/renovatebot/renovate).
<!--renovate-debug:eyJjcmVhdGVkSW5WZXIiOiIzMi4yMjYuMCIsInVwZGF0ZWRJblZlciI6IjMyLjIyNi4wIn0=-->

Co-authored-by: cabr2-bot <cabr2.help@gmail.com>
Reviewed-on: https://codeberg.org/Calciumdibromid/CaBr2/pulls/1580
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>
@github-actions github-actions bot locked as resolved and limited conversation to collaborators Nov 9, 2022
Sign up for free to subscribe to this conversation on GitHub. Already have an account? Sign in.
Labels
enhancement New feature or request
Projects
None yet
Development

Successfully merging this pull request may close these issues.

None yet

2 participants