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

eslint v9 - context.getScope is not a function - API change #924

Closed
Tracked by #65
dylang opened this issue Aug 11, 2024 · 7 comments · Fixed by #925
Closed
Tracked by #65

eslint v9 - context.getScope is not a function - API change #924

dylang opened this issue Aug 11, 2024 · 7 comments · Fixed by #925
Labels
enhancement New feature or request released

Comments

@dylang
Copy link

dylang commented Aug 11, 2024

Have you read the Troubleshooting section?

Yes

Plugin version

v6.3.0

ESLint version

v9..9.0

Node.js version

20.16.0

package manager and version

yarn v1

Operating system

macOS

Bug description

Example error:

TypeError: context.getScope is not a function
Occurred while linting ./examples/example-web-frontend/src/hello-world.test.tsx:39
Rule: "testing-library/await-async-utils"

Steps to reproduce

run eslint in terminal or ide using eslint v9.9.0 and latest plugin.

Error output/screenshots

Rule: "testing-library/await-async-utils"
    at getInnermostFunctionScope (/project/node_modules/eslint-plugin-testing-library/dist/node-utils/index.js:205:71)
    at getInnermostReturningFunction (/project/node_modules/eslint-plugin-testing-library/dist/node-utils/index.js:331:27)
    at detectAsyncUtilWrapper (/project/node_modules/eslint-plugin-testing-library/dist/rules/await-async-utils.js:32:82)
    at CallExpression Identifier (/project/node_modules/eslint-plugin-testing-library/dist/rules/await-async-utils.js:86:21)
    at enhancedRuleInstructions.<computed> (/project/node_modules/eslint-plugin-testing-library/dist/create-testing-library-rule/detect-testing-library-utils.js:528:105)
    at ruleErrorHandler (/project/node_modules/eslint/lib/linter/linter.js:1124:48)
    at /Users/dgreene/medallia/magic-fun/node_modules/eslint/lib/linter/safe-emitter.js:45:58

ESLint configuration

Not the whole config, just the part regarding test files.
The project is using [email protected].

import globals from 'globals';
import testingLibrary from 'eslint-plugin-testing-library';
import { config } from 'typescript-eslint';
import jest from 'eslint-plugin-jest';
import jestDom from 'eslint-plugin-jest-dom';

export const testConfig = config({
  name: 'eslint-config-test-files',

  files: [
    '**/*.test.?(disabled.)?(m)[jt]s?(x)',
    '**/*.spec.?(m)[jt]s?(x)',
    '**/demo/**/*.[jt]s?(x)',
    '**/demo-sandbox/**/*.[jt]s?(x)',
    '**/__mocks__/**/*.[jt]s?(x)',
    '**/test/**/*.[jt]s?(x)',
    '**/fixtures/**/*.[jt]s?(x)'
  ],

  languageOptions: {
    globals: { ...globals.jest, jsdom: true }
  },

  plugins: {
    jest,
    'jest-dom': jestDom,
    'testing-library': testingLibrary
  },

  rules: {
    ...jest.configs['flat/recommended'].rules,
    ...jestDom.configs['flat/recommended'].rules,
    ...testingLibrary.configs['flat/react'].rules
  }
});

Rule(s) affected

Seems like all of them.

Anything else?

It seems that getScope was moved from context to sourceCode

https://eslint.org/docs/latest/use/troubleshooting/v9-rule-api-changes

https://eslint.org/blog/2023/09/preparing-custom-rules-eslint-v9/#context.getscope()

Do you want to submit a pull request to fix this bug?

No

@dylang dylang added bug Something isn't working triage Pending to be triaged by a maintainer labels Aug 11, 2024
@Belco90 Belco90 removed the triage Pending to be triaged by a maintainer label Aug 12, 2024
@Belco90
Copy link
Member

Belco90 commented Aug 12, 2024

Thanks for reporting. In the current version of this plugin, we are only adding compatibility with flat config, but not officially with ESLint v9. I'm afraid you'll have to use the ESLint compatibility util until we release the next major of the plugin, where ESLint v9 will be properly supported.

@Belco90 Belco90 added enhancement New feature or request and removed bug Something isn't working labels Aug 12, 2024
@lemueldizon
Copy link

This below fixed the issue for me, it's a slight change compared to previous version fix pointed out in #899.

{
   ...
    files: ['**/*.test.{ts,tsx}'],
    plugins: {
      'testing-library': fixupPluginRules({
        rules: testingLibrary.rules
      })
    },
    rules: {
      ...testingLibrary.configs['flat/react'].rules,
      'testing-library/no-container': 'off',
      'testing-library/no-node-access': 'off'
    }
   ...
  }

@G-Rath

This comment was marked as outdated.

@G-Rath
Copy link
Contributor

G-Rath commented Aug 15, 2024

I have opened #925 which should resolve this without requiring a new major

@ixartz
Copy link

ixartz commented Oct 13, 2024

Would be great to update the peerDependencies to support ESLint v9. ESLint v8 has been deprecated: "ESLint v8.x reached end-of-life on 2024-10-05 and is no longer maintained." quoted on the official website.

Thanks

@Belco90
Copy link
Member

Belco90 commented Oct 14, 2024

Sorry for not reacting to this. I'll try to get #925 merged this week.

Copy link

🎉 This issue has been resolved in version 6.3.3 🎉

The release is available on:

Your semantic-release bot 📦🚀

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
enhancement New feature or request released
Projects
None yet
Development

Successfully merging a pull request may close this issue.

5 participants