vitest-dev / eslint-plugin-vitest

eslint plugin for vitest
MIT License
325 stars 44 forks source link

Throwing with ESLint 9 and flat config #413

Closed meduzen closed 6 months ago

meduzen commented 6 months ago

See meduzen/datetime-attribute/pull/128.

Using eslint@9.0.0 and eslint-plugin-vitest@0.4.2-beta.3, it throws on the first expect encountered:

> pnpm exec eslint

Oops! Something went wrong! :(

ESLint: 9.0.0

TypeError: context.getAncestors is not a function
Occurred while linting /Users/m/Code/datetime-attribute/tests/index.test.js:41
Rule: "vitest/expect-expect"
    at CallExpression (file:///Users/m/Code/datetime-attribute/node_modules/.pnpm/eslint-plugin-vitest@0.4.2-beta.3_eslint@9.0.0_typescript@5.4.4_vitest@1.4.0/node_modules/eslint-plugin-vitest/dist/index.mjs:751:39)
    at ruleErrorHandler (/Users/m/Code/datetime-attribute/node_modules/.pnpm/eslint@9.0.0/node_modules/eslint/lib/linter/linter.js:1145:48)
    at /Users/m/Code/datetime-attribute/node_modules/.pnpm/eslint@9.0.0/node_modules/eslint/lib/linter/safe-emitter.js:45:58
    at Array.forEach (<anonymous>)
    at Object.emit (/Users/m/Code/datetime-attribute/node_modules/.pnpm/eslint@9.0.0/node_modules/eslint/lib/linter/safe-emitter.js:45:38)
    at NodeEventGenerator.applySelector (/Users/m/Code/datetime-attribute/node_modules/.pnpm/eslint@9.0.0/node_modules/eslint/lib/linter/node-event-generator.js:297:26)
    at NodeEventGenerator.applySelectors (/Users/m/Code/datetime-attribute/node_modules/.pnpm/eslint@9.0.0/node_modules/eslint/lib/linter/node-event-generator.js:326:22)
    at NodeEventGenerator.enterNode (/Users/m/Code/datetime-attribute/node_modules/.pnpm/eslint@9.0.0/node_modules/eslint/lib/linter/node-event-generator.js:340:14)
    at runRules (/Users/m/Code/datetime-attribute/node_modules/.pnpm/eslint@9.0.0/node_modules/eslint/lib/linter/linter.js:1184:40)
    at Linter._verifyWithFlatConfigArrayAndWithoutProcessors (/Users/m/Code/datetime-attribute/node_modules/.pnpm/eslint@9.0.0/node_modules/eslint/lib/linter/linter.js:1910:31)
 ELIFECYCLE  Command failed with exit code 2.

eslint.config.js:

import tseslint from 'typescript-eslint'
import js from '@eslint/js'
import vitest from 'eslint-plugin-vitest'

export default tseslint.config(
  js.configs.recommended,
  {
    files: ['**/*.js'],
    languageOptions: {
      sourceType: 'module',
      ecmaVersion: 2024,
      parserOptions: {
        ecmaFeatures: {
          impliedStrict: true,
        },
      },
    },

    // (first parameter of a rule) 0: off, 1: warning, 2: error
    rules: {
      // my rules…
    }
  },
  {
    files: ['**/*.test.js'],
    plugins: { vitest },
    rules: {
      ...vitest.configs.recommended.rules,
    },
    languageOptions: {
      globals: {
        ...vitest.environments.env.globals,
      },
    },
  },
)

Note: the issue is the same when not using tseslint.config or when only keeping the config entry containing plugins: { vitest }.

meduzen commented 6 months ago

Confirming it works in eslint-plugin-vitest@0.4.2-beta.5. 👍