Skip to content
Permalink

Comparing changes

Choose two branches to see what’s changed or to start a new pull request. If you need to, you can also or learn more about diff comparisons.

Open a pull request

Create a new pull request by comparing changes across two branches. If you need to, you can also . Learn more about diff comparisons here.
base repository: jest-community/eslint-plugin-jest
Failed to load repositories. Confirm that selected base ref is valid, then try again.
Loading
base: v28.2.0
Choose a base ref
...
head repository: jest-community/eslint-plugin-jest
Failed to load repositories. Confirm that selected head ref is valid, then try again.
Loading
compare: v28.3.0
Choose a head ref
  • 16 commits
  • 61 files changed
  • 4 contributors

Commits on Apr 7, 2024

  1. test: alias RuleTester so that linting still works (#1551)

    G-Rath authored Apr 7, 2024
    Copy the full SHA
    bce2f83 View commit details

Commits on Apr 8, 2024

  1. chore(deps): lock file maintenance

    renovate[bot] committed Apr 8, 2024
    Copy the full SHA
    293737f View commit details

Commits on Apr 14, 2024

  1. chore(deps): update dependency eslint-plugin-eslint-plugin to v6 (#1554)

    Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
    renovate[bot] authored Apr 14, 2024
    Copy the full SHA
    507c0f0 View commit details

Commits on Apr 15, 2024

  1. chore(deps): lock file maintenance

    renovate[bot] committed Apr 15, 2024
    Copy the full SHA
    fe8725c View commit details
  2. chore(deps): lock file maintenance

    renovate[bot] committed Apr 15, 2024

    Verified

    This commit was created on GitHub.com and signed with GitHub’s verified signature. The key has expired.
    Copy the full SHA
    93c5cb4 View commit details

Commits on Apr 19, 2024

  1. chore(deps): update danger/danger-js action to v12 (#1558)

    Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
    renovate[bot] authored Apr 19, 2024

    Verified

    This commit was created on GitHub.com and signed with GitHub’s verified signature. The key has expired.
    Copy the full SHA
    9563b9e View commit details
  2. chore(deps): update dependency eslint-plugin-n to v17 (#1553)

    Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
    renovate[bot] authored Apr 19, 2024

    Verified

    This commit was created on GitHub.com and signed with GitHub’s verified signature. The key has expired.
    Copy the full SHA
    462e336 View commit details

Commits on Apr 20, 2024

  1. Verified

    This commit was created on GitHub.com and signed with GitHub’s verified signature. The key has expired.
    Copy the full SHA
    ff36ec2 View commit details
  2. chore: drop the tools from regenerate-docs command and remove oth…

    …er old references to `tools` (#1561)
    
    * chore: remove references to old `tools` directory
    
    * chore: drop the `tools` from `regenerate-docs` command
    G-Rath authored Apr 20, 2024

    Verified

    This commit was created on GitHub.com and signed with GitHub’s verified signature. The key has expired.
    Copy the full SHA
    08cbf8d View commit details

Commits on Apr 22, 2024

  1. Verified

    This commit was created on GitHub.com and signed with GitHub’s verified signature. The key has expired.
    Copy the full SHA
    589c82b View commit details

Commits on Apr 24, 2024

  1. Verified

    This commit was created on GitHub.com and signed with GitHub’s verified signature. The key has expired.
    Copy the full SHA
    a63be2a View commit details

Commits on Apr 25, 2024

  1. Verified

    This commit was created on GitHub.com and signed with GitHub’s verified signature. The key has expired.
    Copy the full SHA
    20c8703 View commit details

Commits on Apr 26, 2024

  1. Verified

    This commit was created on GitHub.com and signed with GitHub’s verified signature. The key has expired.
    Copy the full SHA
    fe09d8a View commit details

Commits on Apr 27, 2024

  1. Verified

    This commit was created on GitHub.com and signed with GitHub’s verified signature. The key has expired.
    Copy the full SHA
    2f21f33 View commit details
  2. feat: prefer importing jest globals for specific types (#1568)

    * feat: prefer importing jest globals for specific types
    
    Accessing the `jest` global in ESM must be done either through
    `import.meta.jest` or by importing it from `@jest/globals`. The latter
    is useful while migrating to ESM because the former is not accessible
    in non-ESM.
    
    This adds an option to specify the types of globals for which we want
    to enforce the import.
    
    * refactor: remove unneeded cast
    
    ---------
    
    Co-authored-by: Gareth Jones <Jones258@Gmail.com>
    tomquist and G-Rath authored Apr 27, 2024

    Verified

    This commit was created on GitHub.com and signed with GitHub’s verified signature. The key has expired.
    Copy the full SHA
    c464ae3 View commit details
  3. chore(release): 28.3.0 [skip ci]

    # [28.3.0](v28.2.0...v28.3.0) (2024-04-27)
    
    ### Features
    
    * prefer importing jest globals for specific types ([#1568](#1568)) ([c464ae3](c464ae3))
    semantic-release-bot committed Apr 27, 2024

    Verified

    This commit was created on GitHub.com and signed with GitHub’s verified signature. The key has expired.
    Copy the full SHA
    bd6b918 View commit details
Showing with 759 additions and 476 deletions.
  1. +1 −7 .eslintrc.js
  2. +1 −1 .github/workflows/lint.yml
  3. +3 −3 .github/workflows/nodejs.yml
  4. +7 −0 CHANGELOG.md
  5. +34 −5 dangerfile.ts
  6. +36 −0 docs/rules/prefer-importing-jest-globals.md
  7. +5 −5 package.json
  8. +2 −2 src/rules/__tests__/consistent-test-it.test.ts
  9. +2 −2 src/rules/__tests__/expect-expect.test.ts
  10. +2 −2 src/rules/__tests__/max-expects.test.ts
  11. +2 −2 src/rules/__tests__/max-nested-describe.test.ts
  12. +2 −2 src/rules/__tests__/no-commented-out-tests.test.ts
  13. +9 −9 src/rules/__tests__/no-conditional-expect.test.ts
  14. +3 −3 src/rules/__tests__/no-conditional-in-test.test.ts
  15. +2 −2 src/rules/__tests__/no-confusing-set-timeout.test.ts
  16. +5 −2 src/rules/__tests__/no-deprecated-functions.test.ts
  17. +2 −2 src/rules/__tests__/no-disabled-tests.test.ts
  18. +2 −2 src/rules/__tests__/no-done-callback.test.ts
  19. +2 −2 src/rules/__tests__/no-duplicate-hooks.test.ts
  20. +2 −2 src/rules/__tests__/no-export.test.ts
  21. +2 −2 src/rules/__tests__/no-focused-tests.test.ts
  22. +2 −2 src/rules/__tests__/no-hooks.test.ts
  23. +2 −2 src/rules/__tests__/no-identical-title.test.ts
  24. +2 −2 src/rules/__tests__/no-interpolation-in-snapshots.test.ts
  25. +2 −2 src/rules/__tests__/no-large-snapshots.test.ts
  26. +2 −2 src/rules/__tests__/no-mocks-import.test.ts
  27. +2 −2 src/rules/__tests__/no-restricted-jest-methods.test.ts
  28. +2 −2 src/rules/__tests__/no-restricted-matchers.test.ts
  29. +2 −2 src/rules/__tests__/no-standalone-expect.test.ts
  30. +2 −2 src/rules/__tests__/no-test-return-statement.test.ts
  31. +2 −2 src/rules/__tests__/no-untyped-mock-factory.test.ts
  32. +2 −2 src/rules/__tests__/prefer-comparison-matcher.test.ts
  33. +4 −4 src/rules/__tests__/prefer-each.test.ts
  34. +2 −2 src/rules/__tests__/prefer-equality-matcher.test.ts
  35. +2 −2 src/rules/__tests__/prefer-expect-assertions.test.ts
  36. +2 −2 src/rules/__tests__/prefer-expect-resolves.test.ts
  37. +39 −39 src/rules/__tests__/prefer-hooks-in-order.test.ts
  38. +2 −2 src/rules/__tests__/prefer-hooks-on-top.test.ts
  39. +48 −2 src/rules/__tests__/prefer-importing-jest-globals.test.ts
  40. +2 −2 src/rules/__tests__/prefer-lowercase-title.test.ts
  41. +2 −2 src/rules/__tests__/prefer-mock-promise-shorthand.test.ts
  42. +3 −3 src/rules/__tests__/prefer-snapshot-hint.test.ts
  43. +2 −2 src/rules/__tests__/prefer-spy-on.test.ts
  44. +3 −3 src/rules/__tests__/prefer-to-be.test.ts
  45. +3 −3 src/rules/__tests__/prefer-to-contain.test.ts
  46. +2 −2 src/rules/__tests__/prefer-to-have-length.test.ts
  47. +2 −2 src/rules/__tests__/prefer-todo.test.ts
  48. +8 −8 src/rules/__tests__/require-hook.test.ts
  49. +2 −2 src/rules/__tests__/require-to-throw-message.test.ts
  50. +2 −2 src/rules/__tests__/require-top-level-describe.test.ts
  51. +3 −3 src/rules/__tests__/unbound-method.test.ts
  52. +2 −2 src/rules/__tests__/valid-describe-callback.test.ts
  53. +9 −9 src/rules/__tests__/valid-expect-in-promise.test.ts
  54. +2 −2 src/rules/__tests__/valid-expect.test.ts
  55. +2 −2 src/rules/__tests__/valid-title.test.ts
  56. +1 −1 src/rules/expect-expect.ts
  57. +31 −3 src/rules/prefer-importing-jest-globals.ts
  58. +1 −1 src/rules/utils/__tests__/detectJestVersion.test.ts
  59. +7 −4 src/rules/utils/__tests__/parseJestFnCall.test.ts
  60. +1 −1 tsconfig.json
  61. +422 −285 yarn.lock
8 changes: 1 addition & 7 deletions .eslintrc.js
Original file line number Diff line number Diff line change
@@ -98,17 +98,11 @@ module.exports = {
globals,
},
{
files: ['src/**/*', 'dangerfile.ts', 'tools/*', './jest.config.ts'],
files: ['src/**/*', 'dangerfile.ts', './jest.config.ts'],
parserOptions: {
sourceType: 'module',
},
},
{
files: ['tools/*'],
rules: {
'node/shebang': 'off',
},
},
{
files: ['.eslintrc.js', 'babel.config.js'],
rules: {
2 changes: 1 addition & 1 deletion .github/workflows/lint.yml
Original file line number Diff line number Diff line change
@@ -29,6 +29,6 @@ jobs:
with:
persist-credentials: false
- name: Danger
uses: danger/danger-js@11.3.1
uses: danger/danger-js@12.1.0
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
6 changes: 3 additions & 3 deletions .github/workflows/nodejs.yml
Original file line number Diff line number Diff line change
@@ -71,7 +71,7 @@ jobs:
strategy:
fail-fast: false
matrix:
node-version: [16.x, 18.x, 20.x, 21.x]
node-version: [16.x, 18.x, 20.x, 21.x, 22.x]
eslint-version: [7, 8, 9]
ts-eslint-plugin-version: [6, 7]
exclude:
@@ -137,12 +137,12 @@ jobs:
- name: install
run: yarn
- name: regenerate docs
run: yarn tools:regenerate-docs
run: yarn regenerate-docs
- name: report regenerated docs
run: |
git diff --name-only \
| xargs -I '{}' bash -c \
'echo "::error file={}::This needs to be regenerated by running \`tools:regenerate-docs\`" && false'
'echo "::error file={}::This needs to be regenerated by running \`yarn regenerate-docs\`" && false'
release:
permissions:
7 changes: 7 additions & 0 deletions CHANGELOG.md
Original file line number Diff line number Diff line change
@@ -1,3 +1,10 @@
# [28.3.0](https://github.com/jest-community/eslint-plugin-jest/compare/v28.2.0...v28.3.0) (2024-04-27)


### Features

* prefer importing jest globals for specific types ([#1568](https://github.com/jest-community/eslint-plugin-jest/issues/1568)) ([c464ae3](https://github.com/jest-community/eslint-plugin-jest/commit/c464ae311b81f005af29df610d4032519125bafa))

# [28.2.0](https://github.com/jest-community/eslint-plugin-jest/compare/v28.1.1...v28.2.0) (2024-04-06)


39 changes: 34 additions & 5 deletions dangerfile.ts
Original file line number Diff line number Diff line change
@@ -6,16 +6,20 @@ if (danger.github.pr.body.length === 0) {
fail('Please include a body for your PR');
}

const createOrAddLabelSafely = async (name: string, color: string) => {
const createOrAddLabelSafely = async (name: string, color: string): boolean => {
try {
await danger.github.utils.createOrAddLabel({
name,
color: color.replace('#', ''),
description: '',
});

return true;
} catch (error) {
console.warn(error);
warn(`Was unable to create or add label "${name}"`);

return false;
}
};

@@ -39,6 +43,18 @@ const labelBasedOnRules = async () => {
);
};

const labelBasedOnTitle = async (): Promise<boolean> => {
if (danger.github.pr.title.startsWith('feat')) {
return createOrAddLabelSafely('enhancement', '#84b6eb');
}

if (danger.github.pr.title.startsWith('fix')) {
return createOrAddLabelSafely('bug', '#ee0701');
}

return false;
};

const labelBasedOnCommits = async () => {
const commits = danger.github.commits.map(commits => commits.commit.message);

@@ -51,7 +67,20 @@ const labelBasedOnCommits = async () => {
}
};

Promise.all([labelBasedOnRules(), labelBasedOnCommits()]).catch(error => {
console.error(error);
fail(`Something went very wrong: ${error}`);
});
const labelBasedOnTitleOrCommits = async () => {
// prioritize labeling based on the title since most pull requests will get
// squashed into a single commit with the title as the subject, but fallback
// to looking through the commits if we can't determine a label from the title
if (await labelBasedOnTitle()) {
return;
}

await labelBasedOnCommits();
};

Promise.all([labelBasedOnRules(), labelBasedOnTitleOrCommits()]).catch(
error => {
console.error(error);
fail(`Something went very wrong: ${error}`);
},
);
36 changes: 36 additions & 0 deletions docs/rules/prefer-importing-jest-globals.md
Original file line number Diff line number Diff line change
@@ -42,6 +42,42 @@ describe('foo', () => {
});
```

## Options

This rule can be configured as follows

```json
{
"type": "object",
"properties": {
"types": {
"type": "array",
"items": {
"type": "string",
"enum": ["hook", "describe", "test", "expect", "jest", "unknown"]
}
}
},
"additionalProperties": false
}
```

#### types

A list of Jest global types to enforce explicit imports for. By default, all
Jest globals are enforced.

This option is useful when you only want to enforce explicit imports for a
subset of Jest globals. For instance, when migrating to ESM, you might want to
enforce explicit imports only for the `jest` global, as of
[Jest's ESM documentation](https://jestjs.io/docs/ecmascript-modules#differences-between-esm-and-commonjs).

```json5
{
'jest/prefer-importing-jest-globals': ['error', { types: ['jest'] }],
}
```

## Further Reading

- [Documentation](https://jestjs.io/docs/api)
10 changes: 5 additions & 5 deletions package.json
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
{
"name": "eslint-plugin-jest",
"version": "28.2.0",
"version": "28.3.0",
"description": "ESLint rules for Jest",
"keywords": [
"eslint",
@@ -29,7 +29,7 @@
"prettier:write": "prettier --write 'docs/**/*.md' README.md '.github/**' package.json tsconfig.json src/globals.json .yarnrc.yml",
"postpublish": "pinst --enable",
"test": "jest",
"tools:regenerate-docs": "yarn prepack && eslint-doc-generator",
"regenerate-docs": "yarn prepack && eslint-doc-generator",
"typecheck": "tsc -p ."
},
"commitlint": {
@@ -86,13 +86,13 @@
"babel-jest": "^29.0.0",
"babel-plugin-replace-ts-export-assignment": "^0.0.2",
"dedent": "^1.5.0",
"eslint": "^7.0.0 || ^8.0.0 || ^9.0.0",
"eslint": "^7.0.0 || ^8.0.0",
"eslint-config-prettier": "^9.0.0",
"eslint-doc-generator": "^1.0.0",
"eslint-plugin-eslint-comments": "^3.1.2",
"eslint-plugin-eslint-plugin": "^5.0.6",
"eslint-plugin-eslint-plugin": "^6.0.0",
"eslint-plugin-import": "^2.25.1",
"eslint-plugin-n": "^15.0.0",
"eslint-plugin-n": "^17.0.0",
"eslint-plugin-prettier": "^5.0.0",
"eslint-remote-tester": "^3.0.0",
"eslint-remote-tester-repositories": "~1.0.0",
4 changes: 2 additions & 2 deletions src/rules/__tests__/consistent-test-it.test.ts
Original file line number Diff line number Diff line change
@@ -1,9 +1,9 @@
import dedent from 'dedent';
import rule from '../consistent-test-it';
import { TestCaseName } from '../utils';
import { FlatCompatRuleTester, espreeParser } from './test-utils';
import { FlatCompatRuleTester as RuleTester, espreeParser } from './test-utils';

const ruleTester = new FlatCompatRuleTester({
const ruleTester = new RuleTester({
parser: espreeParser,
parserOptions: {
ecmaVersion: 2015,
4 changes: 2 additions & 2 deletions src/rules/__tests__/expect-expect.test.ts
Original file line number Diff line number Diff line change
@@ -1,9 +1,9 @@
import { AST_NODE_TYPES } from '@typescript-eslint/utils';
import dedent from 'dedent';
import rule from '../expect-expect';
import { FlatCompatRuleTester, espreeParser } from './test-utils';
import { FlatCompatRuleTester as RuleTester, espreeParser } from './test-utils';

const ruleTester = new FlatCompatRuleTester({
const ruleTester = new RuleTester({
parser: espreeParser,
parserOptions: {
ecmaVersion: 2015,
4 changes: 2 additions & 2 deletions src/rules/__tests__/max-expects.test.ts
Original file line number Diff line number Diff line change
@@ -1,8 +1,8 @@
import dedent from 'dedent';
import rule from '../max-expects';
import { FlatCompatRuleTester, espreeParser } from './test-utils';
import { FlatCompatRuleTester as RuleTester, espreeParser } from './test-utils';

const ruleTester = new FlatCompatRuleTester({
const ruleTester = new RuleTester({
parser: espreeParser,
parserOptions: {
ecmaVersion: 2017,
4 changes: 2 additions & 2 deletions src/rules/__tests__/max-nested-describe.test.ts
Original file line number Diff line number Diff line change
@@ -1,8 +1,8 @@
import dedent from 'dedent';
import rule from '../max-nested-describe';
import { FlatCompatRuleTester, espreeParser } from './test-utils';
import { FlatCompatRuleTester as RuleTester, espreeParser } from './test-utils';

const ruleTester = new FlatCompatRuleTester({
const ruleTester = new RuleTester({
parser: espreeParser,
parserOptions: {
ecmaVersion: 2017,
4 changes: 2 additions & 2 deletions src/rules/__tests__/no-commented-out-tests.test.ts
Original file line number Diff line number Diff line change
@@ -1,8 +1,8 @@
import dedent from 'dedent';
import rule from '../no-commented-out-tests';
import { FlatCompatRuleTester, espreeParser } from './test-utils';
import { FlatCompatRuleTester as RuleTester, espreeParser } from './test-utils';

const ruleTester = new FlatCompatRuleTester({
const ruleTester = new RuleTester({
parser: espreeParser,
parserOptions: {
ecmaVersion: 2015,
18 changes: 9 additions & 9 deletions src/rules/__tests__/no-conditional-expect.test.ts
Original file line number Diff line number Diff line change
@@ -1,8 +1,8 @@
import dedent from 'dedent';
import rule from '../no-conditional-expect';
import { FlatCompatRuleTester, espreeParser } from './test-utils';
import { FlatCompatRuleTester as RuleTester, espreeParser } from './test-utils';

const ruleTester = new FlatCompatRuleTester({
const ruleTester = new RuleTester({
parser: espreeParser,
parserOptions: {
ecmaVersion: 2019,
@@ -128,7 +128,7 @@ ruleTester.run('logical conditions', rule, {
{
code: `
function getValue() {
something && expect(something).toHaveBeenCalled();
something && expect(something).toHaveBeenCalled();
}
it('foo', getValue);
@@ -162,7 +162,7 @@ ruleTester.run('logical conditions', rule, {
{
code: `
function getValue() {
something || expect(something).toHaveBeenCalled();
something || expect(something).toHaveBeenCalled();
}
it('foo', getValue);
@@ -512,7 +512,7 @@ ruleTester.run('catch conditions', rule, {
code: `
it('foo', () => {
try {
} catch (err) {
expect(err).toMatch('Error');
}
@@ -524,7 +524,7 @@ ruleTester.run('catch conditions', rule, {
code: `
it.each\`\`('foo', () => {
try {
} catch (err) {
expect(err).toMatch('Error');
}
@@ -536,7 +536,7 @@ ruleTester.run('catch conditions', rule, {
code: `
it.each()('foo', () => {
try {
} catch (err) {
expect(err).toMatch('Error');
}
@@ -548,7 +548,7 @@ ruleTester.run('catch conditions', rule, {
code: `
it.skip.each\`\`('foo', () => {
try {
} catch (err) {
expect(err).toMatch('Error');
}
@@ -560,7 +560,7 @@ ruleTester.run('catch conditions', rule, {
code: `
it.skip.each()('foo', () => {
try {
} catch (err) {
expect(err).toMatch('Error');
}
6 changes: 3 additions & 3 deletions src/rules/__tests__/no-conditional-in-test.test.ts
Original file line number Diff line number Diff line change
@@ -1,8 +1,8 @@
import dedent from 'dedent';
import rule from '../no-conditional-in-test';
import { FlatCompatRuleTester, espreeParser } from './test-utils';
import { FlatCompatRuleTester as RuleTester, espreeParser } from './test-utils';

const ruleTester = new FlatCompatRuleTester({
const ruleTester = new RuleTester({
parser: espreeParser,
parserOptions: {
ecmaVersion: 2015,
@@ -462,7 +462,7 @@ ruleTester.run('switch statements', rule, {
return thing.bar;
}
});
switch('invalid') {
case true:
expect(values).toStrictEqual(['foo']);
4 changes: 2 additions & 2 deletions src/rules/__tests__/no-confusing-set-timeout.test.ts
Original file line number Diff line number Diff line change
@@ -1,8 +1,8 @@
import dedent from 'dedent';
import rule from '../no-confusing-set-timeout';
import { FlatCompatRuleTester, espreeParser } from './test-utils';
import { FlatCompatRuleTester as RuleTester, espreeParser } from './test-utils';

const ruleTester = new FlatCompatRuleTester({
const ruleTester = new RuleTester({
parser: espreeParser,
parserOptions: {
ecmaVersion: 2020,
7 changes: 5 additions & 2 deletions src/rules/__tests__/no-deprecated-functions.test.ts
Original file line number Diff line number Diff line change
@@ -4,15 +4,18 @@ import {
type JestVersion,
detectJestVersion,
} from '../utils/detectJestVersion';
import { FlatCompatRuleTester, usingFlatConfig } from './test-utils';
import {
FlatCompatRuleTester as RuleTester,
usingFlatConfig,
} from './test-utils';

jest.mock('../utils/detectJestVersion');

const detectJestVersionMock = detectJestVersion as jest.MockedFunction<
typeof detectJestVersion
>;

const ruleTester = new FlatCompatRuleTester();
const ruleTester = new RuleTester();

const generateValidCases = (
jestVersion: JestVersion | string | undefined,
4 changes: 2 additions & 2 deletions src/rules/__tests__/no-disabled-tests.test.ts
Original file line number Diff line number Diff line change
@@ -1,8 +1,8 @@
import dedent from 'dedent';
import rule from '../no-disabled-tests';
import { FlatCompatRuleTester, espreeParser } from './test-utils';
import { FlatCompatRuleTester as RuleTester, espreeParser } from './test-utils';

const ruleTester = new FlatCompatRuleTester({
const ruleTester = new RuleTester({
parser: espreeParser,
parserOptions: {
ecmaVersion: 2015,
4 changes: 2 additions & 2 deletions src/rules/__tests__/no-done-callback.test.ts
Original file line number Diff line number Diff line change
@@ -1,8 +1,8 @@
import dedent from 'dedent';
import rule from '../no-done-callback';
import { FlatCompatRuleTester, espreeParser } from './test-utils';
import { FlatCompatRuleTester as RuleTester, espreeParser } from './test-utils';

const ruleTester = new FlatCompatRuleTester({
const ruleTester = new RuleTester({
parser: espreeParser,
parserOptions: {
ecmaVersion: 2017,
4 changes: 2 additions & 2 deletions src/rules/__tests__/no-duplicate-hooks.test.ts
Original file line number Diff line number Diff line change
@@ -1,8 +1,8 @@
import dedent from 'dedent';
import rule from '../no-duplicate-hooks';
import { FlatCompatRuleTester, espreeParser } from './test-utils';
import { FlatCompatRuleTester as RuleTester, espreeParser } from './test-utils';

const ruleTester = new FlatCompatRuleTester({
const ruleTester = new RuleTester({
parser: espreeParser,
parserOptions: {
ecmaVersion: 2015,
4 changes: 2 additions & 2 deletions src/rules/__tests__/no-export.test.ts
Original file line number Diff line number Diff line change
@@ -1,8 +1,8 @@
import dedent from 'dedent';
import rule from '../no-export';
import { FlatCompatRuleTester, espreeParser } from './test-utils';
import { FlatCompatRuleTester as RuleTester, espreeParser } from './test-utils';

const ruleTester = new FlatCompatRuleTester({
const ruleTester = new RuleTester({
parser: espreeParser,
parserOptions: {
ecmaVersion: 2015,
4 changes: 2 additions & 2 deletions src/rules/__tests__/no-focused-tests.test.ts
Original file line number Diff line number Diff line change
@@ -1,8 +1,8 @@
import dedent from 'dedent';
import rule from '../no-focused-tests';
import { FlatCompatRuleTester, espreeParser } from './test-utils';
import { FlatCompatRuleTester as RuleTester, espreeParser } from './test-utils';

const ruleTester = new FlatCompatRuleTester({
const ruleTester = new RuleTester({
parser: espreeParser,
parserOptions: {
ecmaVersion: 6,
4 changes: 2 additions & 2 deletions src/rules/__tests__/no-hooks.test.ts
Original file line number Diff line number Diff line change
@@ -1,9 +1,9 @@
import dedent from 'dedent';
import rule from '../no-hooks';
import { HookName } from '../utils';
import { FlatCompatRuleTester, espreeParser } from './test-utils';
import { FlatCompatRuleTester as RuleTester, espreeParser } from './test-utils';

const ruleTester = new FlatCompatRuleTester({
const ruleTester = new RuleTester({
parser: espreeParser,
parserOptions: {
ecmaVersion: 2015,
4 changes: 2 additions & 2 deletions src/rules/__tests__/no-identical-title.test.ts
Original file line number Diff line number Diff line change
@@ -1,8 +1,8 @@
import dedent from 'dedent';
import rule from '../no-identical-title';
import { FlatCompatRuleTester, espreeParser } from './test-utils';
import { FlatCompatRuleTester as RuleTester, espreeParser } from './test-utils';

const ruleTester = new FlatCompatRuleTester({
const ruleTester = new RuleTester({
parser: espreeParser,
parserOptions: {
ecmaVersion: 2015,
4 changes: 2 additions & 2 deletions src/rules/__tests__/no-interpolation-in-snapshots.test.ts
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
import rule from '../no-interpolation-in-snapshots';
import { FlatCompatRuleTester, espreeParser } from './test-utils';
import { FlatCompatRuleTester as RuleTester, espreeParser } from './test-utils';

const ruleTester = new FlatCompatRuleTester({
const ruleTester = new RuleTester({
parser: espreeParser,
parserOptions: {
ecmaVersion: 2017,
4 changes: 2 additions & 2 deletions src/rules/__tests__/no-large-snapshots.test.ts
Original file line number Diff line number Diff line change
@@ -2,12 +2,12 @@ import { TSESLint } from '@typescript-eslint/utils';
import dedent from 'dedent';
import rule from '../no-large-snapshots';
import {
FlatCompatRuleTester,
FlatCompatRuleTester as RuleTester,
espreeParser,
usingFlatConfig,
} from './test-utils';

const ruleTester = new FlatCompatRuleTester({
const ruleTester = new RuleTester({
parser: espreeParser,
parserOptions: {
ecmaVersion: 2015,
4 changes: 2 additions & 2 deletions src/rules/__tests__/no-mocks-import.test.ts
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
import rule from '../no-mocks-import';
import { FlatCompatRuleTester, espreeParser } from './test-utils';
import { FlatCompatRuleTester as RuleTester, espreeParser } from './test-utils';

const ruleTester = new FlatCompatRuleTester({
const ruleTester = new RuleTester({
parser: espreeParser,
parserOptions: {
ecmaVersion: 2015,
4 changes: 2 additions & 2 deletions src/rules/__tests__/no-restricted-jest-methods.test.ts
Original file line number Diff line number Diff line change
@@ -1,8 +1,8 @@
import dedent from 'dedent';
import rule from '../no-restricted-jest-methods';
import { FlatCompatRuleTester, espreeParser } from './test-utils';
import { FlatCompatRuleTester as RuleTester, espreeParser } from './test-utils';

const ruleTester = new FlatCompatRuleTester({
const ruleTester = new RuleTester({
parser: espreeParser,
parserOptions: {
ecmaVersion: 2017,
4 changes: 2 additions & 2 deletions src/rules/__tests__/no-restricted-matchers.test.ts
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
import rule from '../no-restricted-matchers';
import { FlatCompatRuleTester, espreeParser } from './test-utils';
import { FlatCompatRuleTester as RuleTester, espreeParser } from './test-utils';

const ruleTester = new FlatCompatRuleTester({
const ruleTester = new RuleTester({
parser: espreeParser,
parserOptions: {
ecmaVersion: 2017,
4 changes: 2 additions & 2 deletions src/rules/__tests__/no-standalone-expect.test.ts
Original file line number Diff line number Diff line change
@@ -1,8 +1,8 @@
import dedent from 'dedent';
import rule from '../no-standalone-expect';
import { FlatCompatRuleTester, espreeParser } from './test-utils';
import { FlatCompatRuleTester as RuleTester, espreeParser } from './test-utils';

const ruleTester = new FlatCompatRuleTester({
const ruleTester = new RuleTester({
parser: espreeParser,
parserOptions: {
ecmaVersion: 2015,
4 changes: 2 additions & 2 deletions src/rules/__tests__/no-test-return-statement.test.ts
Original file line number Diff line number Diff line change
@@ -1,8 +1,8 @@
import dedent from 'dedent';
import rule from '../no-test-return-statement';
import { FlatCompatRuleTester, espreeParser } from './test-utils';
import { FlatCompatRuleTester as RuleTester, espreeParser } from './test-utils';

const ruleTester = new FlatCompatRuleTester({
const ruleTester = new RuleTester({
parser: espreeParser,
parserOptions: { ecmaVersion: 2015 },
});
4 changes: 2 additions & 2 deletions src/rules/__tests__/no-untyped-mock-factory.test.ts
Original file line number Diff line number Diff line change
@@ -1,8 +1,8 @@
import dedent from 'dedent';
import rule from '../no-untyped-mock-factory';
import { FlatCompatRuleTester } from './test-utils';
import { FlatCompatRuleTester as RuleTester } from './test-utils';

const ruleTester = new FlatCompatRuleTester({
const ruleTester = new RuleTester({
parser: require.resolve('@typescript-eslint/parser'),
});

4 changes: 2 additions & 2 deletions src/rules/__tests__/prefer-comparison-matcher.test.ts
Original file line number Diff line number Diff line change
@@ -1,8 +1,8 @@
import type { TSESLint } from '@typescript-eslint/utils';
import rule from '../prefer-comparison-matcher';
import { FlatCompatRuleTester, espreeParser } from './test-utils';
import { FlatCompatRuleTester as RuleTester, espreeParser } from './test-utils';

const ruleTester = new FlatCompatRuleTester({
const ruleTester = new RuleTester({
parser: espreeParser,
parserOptions: {
ecmaVersion: 2015,
8 changes: 4 additions & 4 deletions src/rules/__tests__/prefer-each.test.ts
Original file line number Diff line number Diff line change
@@ -1,8 +1,8 @@
import dedent from 'dedent';
import rule from '../prefer-each';
import { FlatCompatRuleTester, espreeParser } from './test-utils';
import { FlatCompatRuleTester as RuleTester, espreeParser } from './test-utils';

const ruleTester = new FlatCompatRuleTester({
const ruleTester = new RuleTester({
parser: espreeParser,
parserOptions: {
ecmaVersion: 2015,
@@ -270,7 +270,7 @@ ruleTester.run('prefer-each', rule, {
for (const [input, expected] of data) {
it("only returns numbers that are greater than seven", function () {
const numbers = getNumbers(input);
for (let i = 0; i < numbers.length; i++) {
expect(numbers[i]).toBeGreaterThan(7);
}
@@ -291,7 +291,7 @@ ruleTester.run('prefer-each', rule, {
it("only returns numbers that are greater than seven", function () {
const numbers = getNumbers();
for (let i = 0; i < numbers.length; i++) {
expect(numbers[i]).toBeGreaterThan(7);
}
4 changes: 2 additions & 2 deletions src/rules/__tests__/prefer-equality-matcher.test.ts
Original file line number Diff line number Diff line change
@@ -1,8 +1,8 @@
import type { TSESLint } from '@typescript-eslint/utils';
import rule from '../prefer-equality-matcher';
import { FlatCompatRuleTester, espreeParser } from './test-utils';
import { FlatCompatRuleTester as RuleTester, espreeParser } from './test-utils';

const ruleTester = new FlatCompatRuleTester({
const ruleTester = new RuleTester({
parser: espreeParser,
parserOptions: {
ecmaVersion: 2015,
4 changes: 2 additions & 2 deletions src/rules/__tests__/prefer-expect-assertions.test.ts
Original file line number Diff line number Diff line change
@@ -1,8 +1,8 @@
import dedent from 'dedent';
import rule from '../prefer-expect-assertions';
import { FlatCompatRuleTester, espreeParser } from './test-utils';
import { FlatCompatRuleTester as RuleTester, espreeParser } from './test-utils';

const ruleTester = new FlatCompatRuleTester({
const ruleTester = new RuleTester({
parser: espreeParser,
parserOptions: {
ecmaVersion: 2017,
4 changes: 2 additions & 2 deletions src/rules/__tests__/prefer-expect-resolves.test.ts
Original file line number Diff line number Diff line change
@@ -1,8 +1,8 @@
import dedent from 'dedent';
import rule from '../prefer-expect-resolves';
import { FlatCompatRuleTester, espreeParser } from './test-utils';
import { FlatCompatRuleTester as RuleTester, espreeParser } from './test-utils';

const ruleTester = new FlatCompatRuleTester({
const ruleTester = new RuleTester({
parser: espreeParser,
parserOptions: {
ecmaVersion: 2017,
78 changes: 39 additions & 39 deletions src/rules/__tests__/prefer-hooks-in-order.test.ts
Original file line number Diff line number Diff line change
@@ -1,8 +1,8 @@
import dedent from 'dedent';
import rule from '../prefer-hooks-in-order';
import { FlatCompatRuleTester, espreeParser } from './test-utils';
import { FlatCompatRuleTester as RuleTester, espreeParser } from './test-utils';

const ruleTester = new FlatCompatRuleTester({
const ruleTester = new RuleTester({
parser: espreeParser,
parserOptions: {
ecmaVersion: 2015,
@@ -181,47 +181,47 @@ ruleTester.run('prefer-hooks-in-order', rule, {
beforeAll(() => {
createMyDatabase();
});
beforeEach(() => {
seedMyDatabase();
});
it('accepts this input', () => {
// ...
});
it('returns that value', () => {
// ...
});
describe('when the database has specific values', () => {
const specificValue = '...';
beforeEach(() => {
seedMyDatabase(specificValue);
});
it('accepts that input', () => {
// ...
});
it('throws an error', () => {
// ...
});
beforeEach(() => {
mockLogger();
});
afterEach(() => {
clearLogger();
});
it('logs a message', () => {
// ...
});
});
afterAll(() => {
removeMyDatabase();
});
@@ -233,35 +233,35 @@ ruleTester.run('prefer-hooks-in-order', rule, {
setupTheDatabase();
createMocks();
});
beforeAll(() => {
doEvenMore();
});
beforeEach(() => {
cleanTheDatabase();
resetSomeThings();
});
afterEach(() => {
cleanTheDatabase();
resetSomeThings();
});
afterAll(() => {
closeTheDatabase();
stop();
});
it('does something', () => {
const thing = getThing();
expect(thing).toBe('something');
});
it('throws', () => {
// Do something that throws
});
describe('Also have tests in here', () => {
afterAll(() => {});
it('tests something', () => {});
@@ -539,25 +539,25 @@ ruleTester.run('prefer-hooks-in-order', rule, {
beforeAll(() => {});
beforeAll(() => {});
afterAll(() => {});
it('foo nested', () => {
// this is a test
});
describe('when something is true', () => {
beforeAll(() => {});
afterEach(() => {});
it('foo nested', () => {
// this is a test
});
describe('deeply nested', () => {
describe('deeply nested', () => {
afterAll(() => {});
afterAll(() => {});
// This comment does nothing
afterEach(() => {});
it('foo nested', () => {
// this is a test
});
@@ -588,15 +588,15 @@ ruleTester.run('prefer-hooks-in-order', rule, {
setupMocks();
});
};
it('foo', () => {
// this is a test
});
describe('my nested test', () => {
afterAll(() => {});
afterEach(() => {});
it('foo nested', () => {
// this is a test
});
@@ -624,47 +624,47 @@ ruleTester.run('prefer-hooks-in-order', rule, {
beforeEach(() => {
seedMyDatabase();
});
beforeAll(() => {
createMyDatabase();
});
it('accepts this input', () => {
// ...
});
it('returns that value', () => {
// ...
});
describe('when the database has specific values', () => {
const specificValue = '...';
beforeEach(() => {
seedMyDatabase(specificValue);
});
it('accepts that input', () => {
// ...
});
it('throws an error', () => {
// ...
});
afterEach(() => {
clearLogger();
});
beforeEach(() => {
mockLogger();
});
it('logs a message', () => {
// ...
});
});
afterAll(() => {
removeMyDatabase();
});
4 changes: 2 additions & 2 deletions src/rules/__tests__/prefer-hooks-on-top.test.ts
Original file line number Diff line number Diff line change
@@ -1,8 +1,8 @@
import dedent from 'dedent';
import rule from '../prefer-hooks-on-top';
import { FlatCompatRuleTester, espreeParser } from './test-utils';
import { FlatCompatRuleTester as RuleTester, espreeParser } from './test-utils';

const ruleTester = new FlatCompatRuleTester({
const ruleTester = new RuleTester({
parser: espreeParser,
parserOptions: {
ecmaVersion: 2015,
50 changes: 48 additions & 2 deletions src/rules/__tests__/prefer-importing-jest-globals.test.ts
Original file line number Diff line number Diff line change
@@ -1,8 +1,8 @@
import dedent from 'dedent';
import rule from '../prefer-importing-jest-globals';
import { FlatCompatRuleTester, espreeParser } from './test-utils';
import { FlatCompatRuleTester as RuleTester, espreeParser } from './test-utils';

const ruleTester = new FlatCompatRuleTester({
const ruleTester = new RuleTester({
parser: espreeParser,
parserOptions: {
ecmaVersion: 2015,
@@ -22,6 +22,25 @@ ruleTester.run('prefer-importing-jest-globals', rule, {
`,
parserOptions: { sourceType: 'module' },
},
{
code: dedent`
test('should pass', () => {
expect(true).toBeDefined();
});
`,
options: [{ types: ['jest'] }],
parserOptions: { sourceType: 'module' },
},
{
code: dedent`
const { it } = require('@jest/globals');
it('should pass', () => {
expect(true).toBeDefined();
});
`,
options: [{ types: ['test'] }],
parserOptions: { sourceType: 'module' },
},
{
code: dedent`
// with require
@@ -85,6 +104,33 @@ ruleTester.run('prefer-importing-jest-globals', rule, {
},
],
},
{
code: dedent`
jest.useFakeTimers();
describe("suite", () => {
test("foo");
expect(true).toBeDefined();
})
`,
output: dedent`
import { jest } from '@jest/globals';
jest.useFakeTimers();
describe("suite", () => {
test("foo");
expect(true).toBeDefined();
})
`,
options: [{ types: ['jest'] }],
parserOptions: { sourceType: 'module' },
errors: [
{
endColumn: 5,
column: 1,
line: 1,
messageId: 'preferImportingJestGlobal',
},
],
},
{
code: dedent`
import React from 'react';
4 changes: 2 additions & 2 deletions src/rules/__tests__/prefer-lowercase-title.test.ts
Original file line number Diff line number Diff line change
@@ -1,9 +1,9 @@
import dedent from 'dedent';
import rule from '../prefer-lowercase-title';
import { DescribeAlias, TestCaseName } from '../utils';
import { FlatCompatRuleTester, espreeParser } from './test-utils';
import { FlatCompatRuleTester as RuleTester, espreeParser } from './test-utils';

const ruleTester = new FlatCompatRuleTester({
const ruleTester = new RuleTester({
parser: espreeParser,
parserOptions: {
ecmaVersion: 2015,
4 changes: 2 additions & 2 deletions src/rules/__tests__/prefer-mock-promise-shorthand.test.ts
Original file line number Diff line number Diff line change
@@ -1,8 +1,8 @@
import dedent from 'dedent';
import rule from '../prefer-mock-promise-shorthand';
import { FlatCompatRuleTester, espreeParser } from './test-utils';
import { FlatCompatRuleTester as RuleTester, espreeParser } from './test-utils';

const ruleTester = new FlatCompatRuleTester({
const ruleTester = new RuleTester({
parser: espreeParser,
parserOptions: {
ecmaVersion: 6,
6 changes: 3 additions & 3 deletions src/rules/__tests__/prefer-snapshot-hint.test.ts
Original file line number Diff line number Diff line change
@@ -1,8 +1,8 @@
import dedent from 'dedent';
import rule from '../prefer-snapshot-hint';
import { FlatCompatRuleTester, espreeParser } from './test-utils';
import { FlatCompatRuleTester as RuleTester, espreeParser } from './test-utils';

const ruleTester = new FlatCompatRuleTester({
const ruleTester = new RuleTester({
parser: espreeParser,
parserOptions: {
ecmaVersion: 2015,
@@ -80,7 +80,7 @@ ruleTester.run('prefer-snapshot-hint (always)', rule, {
},
{
code: dedent`
const x = "we can't know if this is a string or not";
const x = "we can't know if this is a string or not";
expect(1).toMatchSnapshot(x);
`,
options: ['always'],
4 changes: 2 additions & 2 deletions src/rules/__tests__/prefer-spy-on.test.ts
Original file line number Diff line number Diff line change
@@ -1,8 +1,8 @@
import { AST_NODE_TYPES } from '@typescript-eslint/utils';
import rule from '../prefer-spy-on';
import { FlatCompatRuleTester, espreeParser } from './test-utils';
import { FlatCompatRuleTester as RuleTester, espreeParser } from './test-utils';

const ruleTester = new FlatCompatRuleTester({
const ruleTester = new RuleTester({
parser: espreeParser,
parserOptions: {
ecmaVersion: 2015,
6 changes: 3 additions & 3 deletions src/rules/__tests__/prefer-to-be.test.ts
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
import rule from '../prefer-to-be';
import { FlatCompatRuleTester, espreeParser } from './test-utils';
import { FlatCompatRuleTester as RuleTester, espreeParser } from './test-utils';

const ruleTester = new FlatCompatRuleTester({
const ruleTester = new RuleTester({
parser: espreeParser,
parserOptions: {
ecmaVersion: 2015,
@@ -316,7 +316,7 @@ ruleTester.run('prefer-to-be: undefined vs defined', rule, {
],
});

new FlatCompatRuleTester({
new RuleTester({
parser: require.resolve('@typescript-eslint/parser'),
}).run('prefer-to-be: typescript edition', rule, {
valid: [
6 changes: 3 additions & 3 deletions src/rules/__tests__/prefer-to-contain.test.ts
Original file line number Diff line number Diff line change
@@ -1,8 +1,8 @@
import dedent from 'dedent';
import rule from '../prefer-to-contain';
import { FlatCompatRuleTester, espreeParser } from './test-utils';
import { FlatCompatRuleTester as RuleTester, espreeParser } from './test-utils';

const ruleTester = new FlatCompatRuleTester({
const ruleTester = new RuleTester({
parser: espreeParser,
parserOptions: {
ecmaVersion: 2015,
@@ -211,7 +211,7 @@ ruleTester.run('prefer-to-contain', rule, {
],
});

new FlatCompatRuleTester({
new RuleTester({
parser: require.resolve('@typescript-eslint/parser'),
}).run('prefer-to-be-null: typescript edition', rule, {
valid: [
4 changes: 2 additions & 2 deletions src/rules/__tests__/prefer-to-have-length.test.ts
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
import rule from '../prefer-to-have-length';
import { FlatCompatRuleTester, espreeParser } from './test-utils';
import { FlatCompatRuleTester as RuleTester, espreeParser } from './test-utils';

const ruleTester = new FlatCompatRuleTester({
const ruleTester = new RuleTester({
parser: espreeParser,
parserOptions: {
ecmaVersion: 2020,
4 changes: 2 additions & 2 deletions src/rules/__tests__/prefer-todo.test.ts
Original file line number Diff line number Diff line change
@@ -1,8 +1,8 @@
import dedent from 'dedent';
import rule from '../prefer-todo';
import { FlatCompatRuleTester, espreeParser } from './test-utils';
import { FlatCompatRuleTester as RuleTester, espreeParser } from './test-utils';

const ruleTester = new FlatCompatRuleTester({
const ruleTester = new RuleTester({
parser: espreeParser,
parserOptions: { ecmaVersion: 2015 },
});
16 changes: 8 additions & 8 deletions src/rules/__tests__/require-hook.test.ts
Original file line number Diff line number Diff line change
@@ -1,8 +1,8 @@
import dedent from 'dedent';
import rule from '../require-hook';
import { FlatCompatRuleTester, espreeParser } from './test-utils';
import { FlatCompatRuleTester as RuleTester, espreeParser } from './test-utils';

const ruleTester = new FlatCompatRuleTester({
const ruleTester = new RuleTester({
parser: espreeParser,
parserOptions: {
ecmaVersion: 2017,
@@ -84,7 +84,7 @@ ruleTester.run('require-hook', rule, {
let consoleLogSpy;
beforeEach(() => {
consoleLogSpy = jest.spyOn(console, 'log');
consoleLogSpy = jest.spyOn(console, 'log');
});
it('prints a message', () => {
@@ -95,14 +95,14 @@ ruleTester.run('require-hook', rule, {
});
`,
dedent`
let consoleErrorSpy = null;
let consoleErrorSpy = null;
beforeEach(() => {
consoleErrorSpy = jest.spyOn(console, 'error');
});
`,
dedent`
let consoleErrorSpy = undefined;
let consoleErrorSpy = undefined;
beforeEach(() => {
consoleErrorSpy = jest.spyOn(console, 'error');
@@ -154,7 +154,7 @@ ruleTester.run('require-hook', rule, {
{
code: dedent`
enableAutoDestroy(afterEach);
describe('some tests', () => {
it('is false', () => {
expect(true).toBe(true);
@@ -388,7 +388,7 @@ ruleTester.run('require-hook', rule, {
{
code: dedent`
enableAutoDestroy(afterEach);
describe('some tests', () => {
it('is false', () => {
expect(true).toBe(true);
@@ -407,7 +407,7 @@ ruleTester.run('require-hook', rule, {
],
});

new FlatCompatRuleTester({
new RuleTester({
parser: require.resolve('@typescript-eslint/parser'),
}).run('require-hook: typescript edition', rule, {
valid: [
4 changes: 2 additions & 2 deletions src/rules/__tests__/require-to-throw-message.test.ts
Original file line number Diff line number Diff line change
@@ -1,8 +1,8 @@
import dedent from 'dedent';
import rule from '../require-to-throw-message';
import { FlatCompatRuleTester, espreeParser } from './test-utils';
import { FlatCompatRuleTester as RuleTester, espreeParser } from './test-utils';

const ruleTester = new FlatCompatRuleTester({
const ruleTester = new RuleTester({
parser: espreeParser,
parserOptions: {
ecmaVersion: 2017,
4 changes: 2 additions & 2 deletions src/rules/__tests__/require-top-level-describe.test.ts
Original file line number Diff line number Diff line change
@@ -1,8 +1,8 @@
import dedent from 'dedent';
import rule from '../require-top-level-describe';
import { FlatCompatRuleTester, espreeParser } from './test-utils';
import { FlatCompatRuleTester as RuleTester, espreeParser } from './test-utils';

const ruleTester = new FlatCompatRuleTester({
const ruleTester = new RuleTester({
parser: espreeParser,
parserOptions: {
ecmaVersion: 2015,
6 changes: 3 additions & 3 deletions src/rules/__tests__/unbound-method.test.ts
Original file line number Diff line number Diff line change
@@ -2,15 +2,15 @@ import path from 'path';
import type { TSESLint } from '@typescript-eslint/utils';
import dedent from 'dedent';
import type { MessageIds, Options } from '../unbound-method';
import { FlatCompatRuleTester } from './test-utils';
import { FlatCompatRuleTester as RuleTester } from './test-utils';

function getFixturesRootDir(): string {
return path.join(__dirname, 'fixtures');
}

const rootPath = getFixturesRootDir();

const ruleTester = new FlatCompatRuleTester({
const ruleTester = new RuleTester({
parser: require.resolve('@typescript-eslint/parser'),
parserOptions: {
sourceType: 'module',
@@ -185,7 +185,7 @@ describe('error handling', () => {
});

describe('when @typescript-eslint/eslint-plugin is not available', () => {
const ruleTester = new FlatCompatRuleTester({
const ruleTester = new RuleTester({
parser: require.resolve('@typescript-eslint/parser'),
parserOptions: {
sourceType: 'module',
4 changes: 2 additions & 2 deletions src/rules/__tests__/valid-describe-callback.test.ts
Original file line number Diff line number Diff line change
@@ -1,8 +1,8 @@
import dedent from 'dedent';
import rule from '../valid-describe-callback';
import { FlatCompatRuleTester, espreeParser } from './test-utils';
import { FlatCompatRuleTester as RuleTester, espreeParser } from './test-utils';

const ruleTester = new FlatCompatRuleTester({
const ruleTester = new RuleTester({
parser: espreeParser,
parserOptions: {
ecmaVersion: 2017,
18 changes: 9 additions & 9 deletions src/rules/__tests__/valid-expect-in-promise.test.ts
Original file line number Diff line number Diff line change
@@ -1,8 +1,8 @@
import dedent from 'dedent';
import rule from '../valid-expect-in-promise';
import { FlatCompatRuleTester, espreeParser } from './test-utils';
import { FlatCompatRuleTester as RuleTester, espreeParser } from './test-utils';

const ruleTester = new FlatCompatRuleTester({
const ruleTester = new RuleTester({
parser: espreeParser,
parserOptions: {
ecmaVersion: 2017,
@@ -621,7 +621,7 @@ ruleTester.run('valid-expect-in-promise', rule, {
somePromise = getPromise().then((data) => {
expect(data).toEqual('foo');
});
});
await somePromise;
});
@@ -636,7 +636,7 @@ ruleTester.run('valid-expect-in-promise', rule, {
somePromise = getPromise().then((data) => {
expect(data).toEqual('foo');
});
});
return somePromise;
});
@@ -705,7 +705,7 @@ ruleTester.run('valid-expect-in-promise', rule, {
somePromise = somePromise.then((data) => {
expect(data).toEqual('foo');
});
});
await somePromise;
});
@@ -721,7 +721,7 @@ ruleTester.run('valid-expect-in-promise', rule, {
.then((data) => data)
.then((data) => {
expect(data).toEqual('foo');
});
});
await somePromise;
});
@@ -1467,7 +1467,7 @@ ruleTester.run('valid-expect-in-promise', rule, {
somePromise = getPromise().then((data) => {
expect(data).toEqual('foo');
});
});
await somePromise;
});
@@ -1487,7 +1487,7 @@ ruleTester.run('valid-expect-in-promise', rule, {
let somePromise = getPromise().then((data) => {
expect(data).toEqual('foo');
});
({ somePromise } = {})
});
`,
@@ -1510,7 +1510,7 @@ ruleTester.run('valid-expect-in-promise', rule, {
{
somePromise = getPromise().then((data) => {
expect(data).toEqual('foo');
});
});
await somePromise;
}
4 changes: 2 additions & 2 deletions src/rules/__tests__/valid-expect.test.ts
Original file line number Diff line number Diff line change
@@ -1,8 +1,8 @@
import dedent from 'dedent';
import rule from '../valid-expect';
import { FlatCompatRuleTester, espreeParser } from './test-utils';
import { FlatCompatRuleTester as RuleTester, espreeParser } from './test-utils';

const ruleTester = new FlatCompatRuleTester({
const ruleTester = new RuleTester({
parser: espreeParser,
parserOptions: {
ecmaVersion: 2017,
4 changes: 2 additions & 2 deletions src/rules/__tests__/valid-title.test.ts
Original file line number Diff line number Diff line change
@@ -1,8 +1,8 @@
import dedent from 'dedent';
import rule from '../valid-title';
import { FlatCompatRuleTester, espreeParser } from './test-utils';
import { FlatCompatRuleTester as RuleTester, espreeParser } from './test-utils';

const ruleTester = new FlatCompatRuleTester({
const ruleTester = new RuleTester({
parser: espreeParser,
parserOptions: {
ecmaVersion: 2017,
2 changes: 1 addition & 1 deletion src/rules/expect-expect.ts
Original file line number Diff line number Diff line change
@@ -65,7 +65,7 @@ export default createRule<
properties: {
assertFunctionNames: {
type: 'array',
items: [{ type: 'string' }],
items: { type: 'string' },
},
additionalTestBlockFunctions: {
type: 'array',
34 changes: 31 additions & 3 deletions src/rules/prefer-importing-jest-globals.ts
Original file line number Diff line number Diff line change
@@ -1,5 +1,6 @@
import { AST_NODE_TYPES, type TSESTree } from '@typescript-eslint/utils';
import {
type JestFnType,
createRule,
getAccessorValue,
getSourceCode,
@@ -20,6 +21,15 @@ const createFixerImports = (
: `const { ${allImportsFormatted} } = require('@jest/globals');`;
};

const allJestFnTypes: JestFnType[] = [
'hook',
'describe',
'test',
'expect',
'jest',
'unknown',
];

export default createRule({
name: __filename,
meta: {
@@ -31,10 +41,25 @@ export default createRule({
},
fixable: 'code',
type: 'problem',
schema: [],
schema: [
{
type: 'object',
properties: {
types: {
type: 'array',
items: {
type: 'string',
enum: allJestFnTypes,
},
},
},
additionalProperties: false,
},
],
},
defaultOptions: [],
defaultOptions: [{ types: allJestFnTypes }],
create(context) {
const { types = allJestFnTypes } = context.options[0] || {};
const importedFunctionsWithSource: Record<string, string> = {};
const functionsToImport = new Set<string>();
let reportingNode: TSESTree.Node;
@@ -55,7 +80,10 @@ export default createRule({
return;
}

if (jestFnCall.head.type !== 'import') {
if (
jestFnCall.head.type !== 'import' &&
types.includes(jestFnCall.type)
) {
functionsToImport.add(jestFnCall.name);
reportingNode ||= jestFnCall.head.node;
}
2 changes: 1 addition & 1 deletion src/rules/utils/__tests__/detectJestVersion.test.ts
Original file line number Diff line number Diff line change
@@ -208,7 +208,7 @@ describe('detectJestVersion', () => {
`
const { detectJestVersion } = require('${relativePathToFn}');
const fs = require('fs');
console.log(detectJestVersion());
fs.writeFileSync(
'node_modules/jest/package.json',
11 changes: 7 additions & 4 deletions src/rules/utils/__tests__/parseJestFnCall.test.ts
Original file line number Diff line number Diff line change
@@ -1,7 +1,10 @@
import type { JSONSchemaForNPMPackageJsonFiles } from '@schemastore/package';
import type { TSESTree } from '@typescript-eslint/utils';
import dedent from 'dedent';
import { FlatCompatRuleTester, espreeParser } from '../../__tests__/test-utils';
import {
FlatCompatRuleTester as RuleTester,
espreeParser,
} from '../../__tests__/test-utils';
import {
type ParsedJestFnCall,
type ResolvedJestFnWithNode,
@@ -29,7 +32,7 @@ const findESLintVersion = (): number => {

const eslintVersion = findESLintVersion();

const ruleTester = new FlatCompatRuleTester({
const ruleTester = new RuleTester({
parser: espreeParser,
parserOptions: {
ecmaVersion: 2015,
@@ -484,7 +487,7 @@ if (eslintVersion >= 8) {
{
code: dedent`
const { it } = await import("@jest/globals");
it('is a jest function', () => {});
`,
parserOptions: { sourceType: 'module', ecmaVersion: 2022 },
@@ -510,7 +513,7 @@ if (eslintVersion >= 8) {
{
code: dedent`
const { it } = await import(\`@jest/globals\`);
it('is a jest function', () => {});
`,
parserOptions: { sourceType: 'module', ecmaVersion: 2022 },
2 changes: 1 addition & 1 deletion tsconfig.json
Original file line number Diff line number Diff line change
@@ -17,6 +17,6 @@
"skipLibCheck": false
},
"files": ["eslint-remote-tester.config.ts"],
"include": ["src/**/*", "tools/**/*"],
"include": ["src/**/*"],
"exclude": ["src/rules/__tests__/fixtures/**/*"]
}
707 changes: 422 additions & 285 deletions yarn.lock

Large diffs are not rendered by default.