diff --git a/packages/eslint-plugin-internal/tests/rules/no-poorly-typed-ts-props.test.ts b/packages/eslint-plugin-internal/tests/rules/no-poorly-typed-ts-props.test.ts index 5e75c5e2b7e5..4e9b2a60ce25 100644 --- a/packages/eslint-plugin-internal/tests/rules/no-poorly-typed-ts-props.test.ts +++ b/packages/eslint-plugin-internal/tests/rules/no-poorly-typed-ts-props.test.ts @@ -5,11 +5,11 @@ import rule from '../../src/rules/no-poorly-typed-ts-props'; import { getFixturesRootDir } from '../RuleTester'; const ruleTester = new RuleTester({ - parser: '@typescript-eslint/parser', - parserOptions: { - project: './tsconfig.json', - tsconfigRootDir: getFixturesRootDir(), - sourceType: 'module', + languageOptions: { + parserOptions: { + project: './tsconfig.json', + tsconfigRootDir: getFixturesRootDir(), + }, }, }); diff --git a/packages/eslint-plugin-internal/tests/rules/no-relative-paths-to-internal-packages.test.ts b/packages/eslint-plugin-internal/tests/rules/no-relative-paths-to-internal-packages.test.ts index 2e1cbf99e216..0f48ae9a2c45 100644 --- a/packages/eslint-plugin-internal/tests/rules/no-relative-paths-to-internal-packages.test.ts +++ b/packages/eslint-plugin-internal/tests/rules/no-relative-paths-to-internal-packages.test.ts @@ -5,9 +5,7 @@ import rule, { PACKAGES_DIR, } from '../../src/rules/no-relative-paths-to-internal-packages'; -const ruleTester = new RuleTester({ - parser: '@typescript-eslint/parser', -}); +const ruleTester = new RuleTester(); ruleTester.run('no-relative-paths-to-internal-packages', rule, { valid: [ diff --git a/packages/eslint-plugin-internal/tests/rules/no-typescript-default-import.test.ts b/packages/eslint-plugin-internal/tests/rules/no-typescript-default-import.test.ts index 45590e5012de..94ab1f566266 100644 --- a/packages/eslint-plugin-internal/tests/rules/no-typescript-default-import.test.ts +++ b/packages/eslint-plugin-internal/tests/rules/no-typescript-default-import.test.ts @@ -2,12 +2,7 @@ import { RuleTester } from '@typescript-eslint/rule-tester'; import rule from '../../src/rules/no-typescript-default-import'; -const ruleTester = new RuleTester({ - parser: '@typescript-eslint/parser', - parserOptions: { - sourceType: 'module', - }, -}); +const ruleTester = new RuleTester(); ruleTester.run('no-typescript-default-import', rule, { valid: [ diff --git a/packages/eslint-plugin-internal/tests/rules/no-typescript-estree.test.ts b/packages/eslint-plugin-internal/tests/rules/no-typescript-estree.test.ts index 46eb2edabbe0..8c4bcda6fa82 100644 --- a/packages/eslint-plugin-internal/tests/rules/no-typescript-estree.test.ts +++ b/packages/eslint-plugin-internal/tests/rules/no-typescript-estree.test.ts @@ -2,12 +2,7 @@ import { RuleTester } from '@typescript-eslint/rule-tester'; import rule from '../../src/rules/no-typescript-estree-import'; -const ruleTester = new RuleTester({ - parser: '@typescript-eslint/parser', - parserOptions: { - sourceType: 'module', - }, -}); +const ruleTester = new RuleTester(); ruleTester.run('no-typescript-estree-import', rule, { valid: [ diff --git a/packages/eslint-plugin-internal/tests/rules/plugin-test-formatting.test.ts b/packages/eslint-plugin-internal/tests/rules/plugin-test-formatting.test.ts index 280d3fd67f8e..290673eb56e0 100644 --- a/packages/eslint-plugin-internal/tests/rules/plugin-test-formatting.test.ts +++ b/packages/eslint-plugin-internal/tests/rules/plugin-test-formatting.test.ts @@ -4,11 +4,11 @@ import rule from '../../src/rules/plugin-test-formatting'; import { getFixturesRootDir } from '../RuleTester'; const ruleTester = new RuleTester({ - parser: '@typescript-eslint/parser', - parserOptions: { - project: './tsconfig.json', - tsconfigRootDir: getFixturesRootDir(), - sourceType: 'module', + languageOptions: { + parserOptions: { + project: './tsconfig.json', + tsconfigRootDir: getFixturesRootDir(), + }, }, }); @@ -160,7 +160,7 @@ const test2 = { // TODO - figure out how to handle this pattern ` -import { TSESLint } from '@typescript-eslint/utils'; +import { InvalidTestCase } from '@typescript-eslint/rule-tester'; const test = [ { @@ -169,7 +169,7 @@ const test = [ { code: 'const badlyFormatted = "code2"', }, -].map>(test => ({ +].map>(test => ({ code: test.code, errors: [], })); @@ -724,9 +724,9 @@ const test: RunTests = { }, { code: ` -import { TSESLint } from '@typescript-eslint/utils'; +import { RunTests } from '@typescript-eslint/rule-tester'; -const test: TSESLint.RunTests<'', []> = { +const test: RunTests<'', []> = { valid: [ 'const badlyFormatted = "code"', { @@ -742,9 +742,9 @@ const test: TSESLint.RunTests<'', []> = { }; `, output: ` -import { TSESLint } from '@typescript-eslint/utils'; +import { RunTests } from '@typescript-eslint/rule-tester'; -const test: TSESLint.RunTests<'', []> = { +const test: RunTests<'', []> = { valid: [ "const badlyFormatted = 'code';", { @@ -773,16 +773,16 @@ const test: TSESLint.RunTests<'', []> = { }, { code: ` -import { TSESLint } from '@typescript-eslint/utils'; +import { ValidTestCase } from '@typescript-eslint/rule-tester'; -const test: TSESLint.ValidTestCase<[]> = { +const test: ValidTestCase<[]> = { code: 'const badlyFormatted = "code"', }; `, output: ` -import { TSESLint } from '@typescript-eslint/utils'; +import { ValidTestCase } from '@typescript-eslint/rule-tester'; -const test: TSESLint.ValidTestCase<[]> = { +const test: ValidTestCase<[]> = { code: "const badlyFormatted = 'code';", }; `, @@ -794,9 +794,9 @@ const test: TSESLint.ValidTestCase<[]> = { }, { code: ` -import { TSESLint } from '@typescript-eslint/utils'; +import { InvalidTestCase } from '@typescript-eslint/rule-tester'; -const test: TSESLint.InvalidTestCase<'', []> = { +const test: InvalidTestCase<'', []> = { code: 'const badlyFormatted = "code1"', errors: [ { @@ -815,9 +815,9 @@ const test: TSESLint.InvalidTestCase<'', []> = { }; `, output: ` -import { TSESLint } from '@typescript-eslint/utils'; +import { InvalidTestCase } from '@typescript-eslint/rule-tester'; -const test: TSESLint.InvalidTestCase<'', []> = { +const test: InvalidTestCase<'', []> = { code: "const badlyFormatted = 'code1';", errors: [ { diff --git a/packages/eslint-plugin-internal/tests/rules/prefer-ast-types-enum.test.ts b/packages/eslint-plugin-internal/tests/rules/prefer-ast-types-enum.test.ts index 44f9f6118bac..78052be73451 100644 --- a/packages/eslint-plugin-internal/tests/rules/prefer-ast-types-enum.test.ts +++ b/packages/eslint-plugin-internal/tests/rules/prefer-ast-types-enum.test.ts @@ -4,12 +4,7 @@ import { AST_NODE_TYPES, AST_TOKEN_TYPES } from '@typescript-eslint/utils'; import rule from '../../src/rules/prefer-ast-types-enum'; -const ruleTester = new RuleTester({ - parser: '@typescript-eslint/parser', - parserOptions: { - sourceType: 'module', - }, -}); +const ruleTester = new RuleTester(); ruleTester.run('prefer-ast-types-enum', rule, { valid: [ diff --git a/packages/eslint-plugin/tests/eslint-rules/arrow-parens.test.ts b/packages/eslint-plugin/tests/eslint-rules/arrow-parens.test.ts index 825eceb29d97..9f27b18b35ec 100644 --- a/packages/eslint-plugin/tests/eslint-rules/arrow-parens.test.ts +++ b/packages/eslint-plugin/tests/eslint-rules/arrow-parens.test.ts @@ -4,9 +4,7 @@ import { getESLintCoreRule } from '../../src/util/getESLintCoreRule'; const rule = getESLintCoreRule('arrow-parens'); -const ruleTester = new RuleTester({ - parser: '@typescript-eslint/parser', -}); +const ruleTester = new RuleTester(); ruleTester.run('arrow-parens', rule, { valid: [ diff --git a/packages/eslint-plugin/tests/eslint-rules/no-dupe-args.test.ts b/packages/eslint-plugin/tests/eslint-rules/no-dupe-args.test.ts index 054d19140bf7..0050a131761b 100644 --- a/packages/eslint-plugin/tests/eslint-rules/no-dupe-args.test.ts +++ b/packages/eslint-plugin/tests/eslint-rules/no-dupe-args.test.ts @@ -4,14 +4,7 @@ import { getESLintCoreRule } from '../../src/util/getESLintCoreRule'; const rule = getESLintCoreRule('no-dupe-args'); -const ruleTester = new RuleTester({ - parserOptions: { - ecmaVersion: 6, - sourceType: 'module', - ecmaFeatures: {}, - }, - parser: '@typescript-eslint/parser', -}); +const ruleTester = new RuleTester(); ruleTester.run('no-dupe-args', rule, { valid: [ diff --git a/packages/eslint-plugin/tests/eslint-rules/no-implicit-globals.test.ts b/packages/eslint-plugin/tests/eslint-rules/no-implicit-globals.test.ts index ba4d5cc1a430..ebac70b7d2f7 100644 --- a/packages/eslint-plugin/tests/eslint-rules/no-implicit-globals.test.ts +++ b/packages/eslint-plugin/tests/eslint-rules/no-implicit-globals.test.ts @@ -3,13 +3,7 @@ import { RuleTester } from '@typescript-eslint/rule-tester'; import { getESLintCoreRule } from '../../src/util/getESLintCoreRule'; const rule = getESLintCoreRule('no-implicit-globals'); -const ruleTester = new RuleTester({ - parserOptions: { - ecmaVersion: 6, - sourceType: 'module', - }, - parser: '@typescript-eslint/parser', -}); +const ruleTester = new RuleTester(); ruleTester.run('no-implicit-globals', rule, { valid: [ diff --git a/packages/eslint-plugin/tests/eslint-rules/no-restricted-globals.test.ts b/packages/eslint-plugin/tests/eslint-rules/no-restricted-globals.test.ts index b015020fa5e1..2958d9d13cfd 100644 --- a/packages/eslint-plugin/tests/eslint-rules/no-restricted-globals.test.ts +++ b/packages/eslint-plugin/tests/eslint-rules/no-restricted-globals.test.ts @@ -4,14 +4,7 @@ import { getESLintCoreRule } from '../../src/util/getESLintCoreRule'; const rule = getESLintCoreRule('no-restricted-globals'); -const ruleTester = new RuleTester({ - parserOptions: { - ecmaVersion: 6, - sourceType: 'module', - ecmaFeatures: {}, - }, - parser: '@typescript-eslint/parser', -}); +const ruleTester = new RuleTester(); ruleTester.run('no-restricted-globals', rule, { valid: [ diff --git a/packages/eslint-plugin/tests/eslint-rules/no-undef.test.ts b/packages/eslint-plugin/tests/eslint-rules/no-undef.test.ts index a6ce89cc8d24..2180223d1eab 100644 --- a/packages/eslint-plugin/tests/eslint-rules/no-undef.test.ts +++ b/packages/eslint-plugin/tests/eslint-rules/no-undef.test.ts @@ -4,14 +4,7 @@ import { getESLintCoreRule } from '../../src/util/getESLintCoreRule'; const rule = getESLintCoreRule('no-undef'); -const ruleTester = new RuleTester({ - parserOptions: { - ecmaVersion: 6, - sourceType: 'module', - ecmaFeatures: {}, - }, - parser: '@typescript-eslint/parser', -}); +const ruleTester = new RuleTester(); ruleTester.run('no-undef', rule, { valid: [ @@ -47,8 +40,10 @@ const links = document.querySelectorAll(selector) as NodeListOf; /*globals document, selector */ const links = document.querySelectorAll(selector) as NodeListOf; `, - parserOptions: { - lib: ['dom'], + languageOptions: { + parserOptions: { + lib: ['dom'], + }, }, }, // https://github.com/eslint/typescript-eslint-parser/issues/437 @@ -155,9 +150,11 @@ let test: unknown; function Foo() {} ; `, - parserOptions: { - ecmaFeatures: { - jsx: true, + languageOptions: { + parserOptions: { + ecmaFeatures: { + jsx: true, + }, }, }, }, @@ -167,9 +164,11 @@ type T = 1; function Foo() {} />; `, - parserOptions: { - ecmaFeatures: { - jsx: true, + languageOptions: { + parserOptions: { + ecmaFeatures: { + jsx: true, + }, }, }, }, @@ -179,9 +178,11 @@ const x = 1; function Foo() {} ; `, - parserOptions: { - ecmaFeatures: { - jsx: true, + languageOptions: { + parserOptions: { + ecmaFeatures: { + jsx: true, + }, }, }, }, @@ -191,9 +192,11 @@ const x = {}; function Foo() {} ; `, - parserOptions: { - ecmaFeatures: { - jsx: true, + languageOptions: { + parserOptions: { + ecmaFeatures: { + jsx: true, + }, }, }, }, @@ -203,9 +206,11 @@ const x = {}; function Foo() {} {x}; `, - parserOptions: { - ecmaFeatures: { - jsx: true, + languageOptions: { + parserOptions: { + ecmaFeatures: { + jsx: true, + }, }, }, }, @@ -214,9 +219,11 @@ function Foo() {} code: `
; `, - parserOptions: { - ecmaFeatures: { - jsx: true, + languageOptions: { + parserOptions: { + ecmaFeatures: { + jsx: true, + }, }, }, }, @@ -224,9 +231,11 @@ function Foo() {} code: ` ; `, - parserOptions: { - ecmaFeatures: { - jsx: true, + languageOptions: { + parserOptions: { + ecmaFeatures: { + jsx: true, + }, }, }, }, @@ -301,9 +310,11 @@ class Foo { }, { code: ';', - parserOptions: { - ecmaFeatures: { - jsx: true, + languageOptions: { + parserOptions: { + ecmaFeatures: { + jsx: true, + }, }, }, errors: [ @@ -322,9 +333,11 @@ class Foo { function Foo() {} ; `, - parserOptions: { - ecmaFeatures: { - jsx: true, + languageOptions: { + parserOptions: { + ecmaFeatures: { + jsx: true, + }, }, }, errors: [ @@ -343,9 +356,11 @@ function Foo() {} function Foo() {} ; `, - parserOptions: { - ecmaFeatures: { - jsx: true, + languageOptions: { + parserOptions: { + ecmaFeatures: { + jsx: true, + }, }, }, errors: [ @@ -364,9 +379,11 @@ function Foo() {} function Foo() {} />; `, - parserOptions: { - ecmaFeatures: { - jsx: true, + languageOptions: { + parserOptions: { + ecmaFeatures: { + jsx: true, + }, }, }, errors: [ @@ -385,9 +402,11 @@ function Foo() {} function Foo() {} {x}; `, - parserOptions: { - ecmaFeatures: { - jsx: true, + languageOptions: { + parserOptions: { + ecmaFeatures: { + jsx: true, + }, }, }, errors: [ diff --git a/packages/eslint-plugin/tests/eslint-rules/prefer-const.test.ts b/packages/eslint-plugin/tests/eslint-rules/prefer-const.test.ts index e9d8350ff097..5223be374c4a 100644 --- a/packages/eslint-plugin/tests/eslint-rules/prefer-const.test.ts +++ b/packages/eslint-plugin/tests/eslint-rules/prefer-const.test.ts @@ -4,9 +4,7 @@ import { getESLintCoreRule } from '../../src/util/getESLintCoreRule'; const rule = getESLintCoreRule('prefer-const'); -const ruleTester = new RuleTester({ - parser: '@typescript-eslint/parser', -}); +const ruleTester = new RuleTester(); ruleTester.run('prefer-const', rule, { valid: [ diff --git a/packages/eslint-plugin/tests/eslint-rules/strict.test.ts b/packages/eslint-plugin/tests/eslint-rules/strict.test.ts index a3146c36d7bd..e25d6f7a44da 100644 --- a/packages/eslint-plugin/tests/eslint-rules/strict.test.ts +++ b/packages/eslint-plugin/tests/eslint-rules/strict.test.ts @@ -4,13 +4,7 @@ import { getESLintCoreRule } from '../../src/util/getESLintCoreRule'; const rule = getESLintCoreRule('strict'); -const ruleTester = new RuleTester({ - parserOptions: { - ecmaVersion: 6, - sourceType: 'module', - }, - parser: '@typescript-eslint/parser', -}); +const ruleTester = new RuleTester(); ruleTester.run('strict', rule, { valid: [ @@ -33,8 +27,10 @@ window.whatevs = { }, }; `, - parserOptions: { - sourceType: 'script', + languageOptions: { + parserOptions: { + sourceType: 'script', + }, }, errors: [ { diff --git a/packages/eslint-plugin/tests/rules/adjacent-overload-signatures.test.ts b/packages/eslint-plugin/tests/rules/adjacent-overload-signatures.test.ts index e834112f6ecc..3839469351ce 100644 --- a/packages/eslint-plugin/tests/rules/adjacent-overload-signatures.test.ts +++ b/packages/eslint-plugin/tests/rules/adjacent-overload-signatures.test.ts @@ -2,9 +2,7 @@ import { RuleTester } from '@typescript-eslint/rule-tester'; import rule from '../../src/rules/adjacent-overload-signatures'; -const ruleTester = new RuleTester({ - parser: '@typescript-eslint/parser', -}); +const ruleTester = new RuleTester(); ruleTester.run('adjacent-overload-signatures', rule, { valid: [ @@ -15,7 +13,7 @@ function error(b: number); function error(ab: string | number) {} export { error }; `, - parserOptions: { sourceType: 'module' }, + languageOptions: { parserOptions: { sourceType: 'module' } }, }, { code: ` @@ -27,7 +25,7 @@ function mapStateToProps() {} function mapDispatchToProps() {} export default connect(mapStateToProps, mapDispatchToProps)(ErrorMessage); `, - parserOptions: { sourceType: 'module' }, + languageOptions: { parserOptions: { sourceType: 'module' } }, }, ` export const foo = 'a', diff --git a/packages/eslint-plugin/tests/rules/array-type.test.ts b/packages/eslint-plugin/tests/rules/array-type.test.ts index a9fae5e2be9c..ca71cbdaf15c 100644 --- a/packages/eslint-plugin/tests/rules/array-type.test.ts +++ b/packages/eslint-plugin/tests/rules/array-type.test.ts @@ -6,9 +6,7 @@ import type { OptionString } from '../../src/rules/array-type'; import rule from '../../src/rules/array-type'; import { areOptionsValid } from '../areOptionsValid'; -const ruleTester = new RuleTester({ - parser: '@typescript-eslint/parser', -}); +const ruleTester = new RuleTester(); ruleTester.run('array-type', rule, { valid: [ diff --git a/packages/eslint-plugin/tests/rules/await-thenable.test.ts b/packages/eslint-plugin/tests/rules/await-thenable.test.ts index 27e4309092e8..ebb8c6ef9537 100644 --- a/packages/eslint-plugin/tests/rules/await-thenable.test.ts +++ b/packages/eslint-plugin/tests/rules/await-thenable.test.ts @@ -7,12 +7,12 @@ const rootDir = getFixturesRootDir(); const messageId = 'await'; const ruleTester = new RuleTester({ - parserOptions: { - ecmaVersion: 2018, - tsconfigRootDir: rootDir, - project: './tsconfig.json', + languageOptions: { + parserOptions: { + tsconfigRootDir: rootDir, + project: './tsconfig.json', + }, }, - parser: '@typescript-eslint/parser', }); ruleTester.run('await-thenable', rule, { diff --git a/packages/eslint-plugin/tests/rules/ban-ts-comment.test.ts b/packages/eslint-plugin/tests/rules/ban-ts-comment.test.ts index 51447bfe6130..8ac62dbb40cb 100644 --- a/packages/eslint-plugin/tests/rules/ban-ts-comment.test.ts +++ b/packages/eslint-plugin/tests/rules/ban-ts-comment.test.ts @@ -2,9 +2,7 @@ import { noFormat, RuleTester } from '@typescript-eslint/rule-tester'; import rule from '../../src/rules/ban-ts-comment'; -const ruleTester = new RuleTester({ - parser: '@typescript-eslint/parser', -}); +const ruleTester = new RuleTester(); ruleTester.run('ts-expect-error', rule, { valid: [ diff --git a/packages/eslint-plugin/tests/rules/ban-tslint-comment.test.ts b/packages/eslint-plugin/tests/rules/ban-tslint-comment.test.ts index 01f6ec078a84..062fcd531988 100644 --- a/packages/eslint-plugin/tests/rules/ban-tslint-comment.test.ts +++ b/packages/eslint-plugin/tests/rules/ban-tslint-comment.test.ts @@ -46,9 +46,7 @@ console.log(woah); }, ] -const ruleTester = new RuleTester({ - parser: '@typescript-eslint/parser', -}); +const ruleTester = new RuleTester(); ruleTester.run('ban-tslint-comment', rule, { valid: [ diff --git a/packages/eslint-plugin/tests/rules/class-literal-property-style.test.ts b/packages/eslint-plugin/tests/rules/class-literal-property-style.test.ts index 9e6519c10db0..902274292572 100644 --- a/packages/eslint-plugin/tests/rules/class-literal-property-style.test.ts +++ b/packages/eslint-plugin/tests/rules/class-literal-property-style.test.ts @@ -2,9 +2,7 @@ import { RuleTester } from '@typescript-eslint/rule-tester'; import rule from '../../src/rules/class-literal-property-style'; -const ruleTester = new RuleTester({ - parser: '@typescript-eslint/parser', -}); +const ruleTester = new RuleTester(); ruleTester.run('class-literal-property-style', rule, { valid: [ diff --git a/packages/eslint-plugin/tests/rules/class-methods-use-this/class-methods-use-this-core.test.ts b/packages/eslint-plugin/tests/rules/class-methods-use-this/class-methods-use-this-core.test.ts index 4fba4d557f15..50f527082553 100644 --- a/packages/eslint-plugin/tests/rules/class-methods-use-this/class-methods-use-this-core.test.ts +++ b/packages/eslint-plugin/tests/rules/class-methods-use-this/class-methods-use-this-core.test.ts @@ -5,97 +5,113 @@ import { AST_NODE_TYPES } from '@typescript-eslint/utils'; import rule from '../../../src/rules/class-methods-use-this'; -const ruleTester = new RuleTester({ - parser: '@typescript-eslint/parser', -}); +const ruleTester = new RuleTester(); ruleTester.run('class-methods-use-this', rule, { valid: [ - { code: 'class A { constructor() {} }', parserOptions: { ecmaVersion: 6 } }, - { code: 'class A { foo() {this} }', parserOptions: { ecmaVersion: 6 } }, + { + code: 'class A { constructor() {} }', + languageOptions: { parserOptions: { ecmaVersion: 6 } }, + }, + { + code: 'class A { foo() {this} }', + languageOptions: { parserOptions: { ecmaVersion: 6 } }, + }, { code: "class A { foo() {this.bar = 'bar';} }", - parserOptions: { ecmaVersion: 6 }, + languageOptions: { parserOptions: { ecmaVersion: 6 } }, }, { code: 'class A { foo() {bar(this);} }', - parserOptions: { ecmaVersion: 6 }, + languageOptions: { parserOptions: { ecmaVersion: 6 } }, }, { code: 'class A extends B { foo() {super.foo();} }', - parserOptions: { ecmaVersion: 6 }, + languageOptions: { parserOptions: { ecmaVersion: 6 } }, }, { code: 'class A { foo() { if(true) { return this; } } }', - parserOptions: { ecmaVersion: 6 }, + languageOptions: { parserOptions: { ecmaVersion: 6 } }, + }, + { + code: 'class A { static foo() {} }', + languageOptions: { parserOptions: { ecmaVersion: 6 } }, + }, + { + code: '({ a(){} });', + languageOptions: { parserOptions: { ecmaVersion: 6 } }, }, - { code: 'class A { static foo() {} }', parserOptions: { ecmaVersion: 6 } }, - { code: '({ a(){} });', parserOptions: { ecmaVersion: 6 } }, { code: 'class A { foo() { () => this; } }', - parserOptions: { ecmaVersion: 6 }, + languageOptions: { parserOptions: { ecmaVersion: 6 } }, + }, + { + code: '({ a: function () {} });', + languageOptions: { parserOptions: { ecmaVersion: 6 } }, }, - { code: '({ a: function () {} });', parserOptions: { ecmaVersion: 6 } }, { code: 'class A { foo() {this} bar() {} }', options: [{ exceptMethods: ['bar'] }], - parserOptions: { ecmaVersion: 6 }, + languageOptions: { parserOptions: { ecmaVersion: 6 } }, }, { code: 'class A { "foo"() { } }', options: [{ exceptMethods: ['foo'] }], - parserOptions: { ecmaVersion: 6 }, + languageOptions: { parserOptions: { ecmaVersion: 6 } }, }, { code: 'class A { 42() { } }', options: [{ exceptMethods: ['42'] }], - parserOptions: { ecmaVersion: 6 }, + languageOptions: { parserOptions: { ecmaVersion: 6 } }, }, { code: 'class A { foo = function() {this} }', - parserOptions: { ecmaVersion: 2022 }, + languageOptions: { parserOptions: { ecmaVersion: 2022 } }, }, { code: 'class A { foo = () => {this} }', - parserOptions: { ecmaVersion: 2022 }, + languageOptions: { parserOptions: { ecmaVersion: 2022 } }, }, { code: 'class A { foo = () => {super.toString} }', - parserOptions: { ecmaVersion: 2022 }, + languageOptions: { parserOptions: { ecmaVersion: 2022 } }, }, { code: 'class A { static foo = function() {} }', - parserOptions: { ecmaVersion: 2022 }, + languageOptions: { parserOptions: { ecmaVersion: 2022 } }, }, { code: 'class A { static foo = () => {} }', - parserOptions: { ecmaVersion: 2022 }, + languageOptions: { parserOptions: { ecmaVersion: 2022 } }, }, { code: 'class A { #bar() {} }', options: [{ exceptMethods: ['#bar'] }], - parserOptions: { ecmaVersion: 2022 }, + languageOptions: { parserOptions: { ecmaVersion: 2022 } }, }, { code: 'class A { foo = function () {} }', options: [{ enforceForClassFields: false }], - parserOptions: { ecmaVersion: 2022 }, + languageOptions: { parserOptions: { ecmaVersion: 2022 } }, }, { code: 'class A { foo = () => {} }', options: [{ enforceForClassFields: false }], - parserOptions: { ecmaVersion: 2022 }, + languageOptions: { parserOptions: { ecmaVersion: 2022 } }, }, { code: 'class A { foo() { return class { [this.foo] = 1 }; } }', - parserOptions: { ecmaVersion: 2022 }, + languageOptions: { parserOptions: { ecmaVersion: 2022 } }, + }, + { + code: 'class A { static {} }', + languageOptions: { parserOptions: { ecmaVersion: 2022 } }, }, - { code: 'class A { static {} }', parserOptions: { ecmaVersion: 2022 } }, ], invalid: [ { code: 'class A { foo() {} }', - parserOptions: { ecmaVersion: 6 }, + languageOptions: { parserOptions: { ecmaVersion: 6 } }, errors: [ { type: AST_NODE_TYPES.FunctionExpression, @@ -108,7 +124,7 @@ ruleTester.run('class-methods-use-this', rule, { }, { code: 'class A { foo() {/**this**/} }', - parserOptions: { ecmaVersion: 6 }, + languageOptions: { parserOptions: { ecmaVersion: 6 } }, errors: [ { type: AST_NODE_TYPES.FunctionExpression, @@ -121,7 +137,7 @@ ruleTester.run('class-methods-use-this', rule, { }, { code: 'class A { foo() {var a = function () {this};} }', - parserOptions: { ecmaVersion: 6 }, + languageOptions: { parserOptions: { ecmaVersion: 6 } }, errors: [ { type: AST_NODE_TYPES.FunctionExpression, @@ -134,7 +150,7 @@ ruleTester.run('class-methods-use-this', rule, { }, { code: 'class A { foo() {var a = function () {var b = function(){this}};} }', - parserOptions: { ecmaVersion: 6 }, + languageOptions: { parserOptions: { ecmaVersion: 6 } }, errors: [ { type: AST_NODE_TYPES.FunctionExpression, @@ -147,7 +163,7 @@ ruleTester.run('class-methods-use-this', rule, { }, { code: 'class A { foo() {window.this} }', - parserOptions: { ecmaVersion: 6 }, + languageOptions: { parserOptions: { ecmaVersion: 6 } }, errors: [ { type: AST_NODE_TYPES.FunctionExpression, @@ -160,7 +176,7 @@ ruleTester.run('class-methods-use-this', rule, { }, { code: "class A { foo() {that.this = 'this';} }", - parserOptions: { ecmaVersion: 6 }, + languageOptions: { parserOptions: { ecmaVersion: 6 } }, errors: [ { type: AST_NODE_TYPES.FunctionExpression, @@ -173,7 +189,7 @@ ruleTester.run('class-methods-use-this', rule, { }, { code: 'class A { foo() { () => undefined; } }', - parserOptions: { ecmaVersion: 6 }, + languageOptions: { parserOptions: { ecmaVersion: 6 } }, errors: [ { type: AST_NODE_TYPES.FunctionExpression, @@ -187,7 +203,7 @@ ruleTester.run('class-methods-use-this', rule, { { code: 'class A { foo() {} bar() {} }', options: [{ exceptMethods: ['bar'] }], - parserOptions: { ecmaVersion: 6 }, + languageOptions: { parserOptions: { ecmaVersion: 6 } }, errors: [ { type: AST_NODE_TYPES.FunctionExpression, @@ -201,7 +217,7 @@ ruleTester.run('class-methods-use-this', rule, { { code: 'class A { foo() {} hasOwnProperty() {} }', options: [{ exceptMethods: ['foo'] }], - parserOptions: { ecmaVersion: 6 }, + languageOptions: { parserOptions: { ecmaVersion: 6 } }, errors: [ { type: AST_NODE_TYPES.FunctionExpression, @@ -215,7 +231,7 @@ ruleTester.run('class-methods-use-this', rule, { { code: 'class A { [foo]() {} }', options: [{ exceptMethods: ['foo'] }], - parserOptions: { ecmaVersion: 6 }, + languageOptions: { parserOptions: { ecmaVersion: 6 } }, errors: [ { type: AST_NODE_TYPES.FunctionExpression, @@ -229,7 +245,7 @@ ruleTester.run('class-methods-use-this', rule, { { code: 'class A { #foo() { } foo() {} #bar() {} }', options: [{ exceptMethods: ['#foo'] }], - parserOptions: { ecmaVersion: 2022 }, + languageOptions: { parserOptions: { ecmaVersion: 2022 } }, errors: [ { type: AST_NODE_TYPES.FunctionExpression, @@ -249,7 +265,7 @@ ruleTester.run('class-methods-use-this', rule, { }, { code: "class A { foo(){} 'bar'(){} 123(){} [`baz`](){} [a](){} [f(a)](){} get quux(){} set[a](b){} *quuux(){} }", - parserOptions: { ecmaVersion: 6 }, + languageOptions: { parserOptions: { ecmaVersion: 6 } }, errors: [ { messageId: 'missingThis', @@ -309,7 +325,7 @@ ruleTester.run('class-methods-use-this', rule, { }, { code: 'class A { foo = function() {} }', - parserOptions: { ecmaVersion: 2022 }, + languageOptions: { parserOptions: { ecmaVersion: 2022 } }, errors: [ { messageId: 'missingThis', @@ -321,7 +337,7 @@ ruleTester.run('class-methods-use-this', rule, { }, { code: 'class A { foo = () => {} }', - parserOptions: { ecmaVersion: 2022 }, + languageOptions: { parserOptions: { ecmaVersion: 2022 } }, errors: [ { messageId: 'missingThis', @@ -333,7 +349,7 @@ ruleTester.run('class-methods-use-this', rule, { }, { code: 'class A { #foo = function() {} }', - parserOptions: { ecmaVersion: 2022 }, + languageOptions: { parserOptions: { ecmaVersion: 2022 } }, errors: [ { messageId: 'missingThis', @@ -345,7 +361,7 @@ ruleTester.run('class-methods-use-this', rule, { }, { code: 'class A { #foo = () => {} }', - parserOptions: { ecmaVersion: 2022 }, + languageOptions: { parserOptions: { ecmaVersion: 2022 } }, errors: [ { messageId: 'missingThis', @@ -357,7 +373,7 @@ ruleTester.run('class-methods-use-this', rule, { }, { code: 'class A { #foo() {} }', - parserOptions: { ecmaVersion: 2022 }, + languageOptions: { parserOptions: { ecmaVersion: 2022 } }, errors: [ { messageId: 'missingThis', @@ -369,7 +385,7 @@ ruleTester.run('class-methods-use-this', rule, { }, { code: 'class A { get #foo() {} }', - parserOptions: { ecmaVersion: 2022 }, + languageOptions: { parserOptions: { ecmaVersion: 2022 } }, errors: [ { messageId: 'missingThis', @@ -381,7 +397,7 @@ ruleTester.run('class-methods-use-this', rule, { }, { code: 'class A { set #foo(x) {} }', - parserOptions: { ecmaVersion: 2022 }, + languageOptions: { parserOptions: { ecmaVersion: 2022 } }, errors: [ { messageId: 'missingThis', @@ -393,7 +409,7 @@ ruleTester.run('class-methods-use-this', rule, { }, { code: 'class A { foo () { return class { foo = this }; } }', - parserOptions: { ecmaVersion: 2022 }, + languageOptions: { parserOptions: { ecmaVersion: 2022 } }, errors: [ { messageId: 'missingThis', @@ -405,7 +421,7 @@ ruleTester.run('class-methods-use-this', rule, { }, { code: 'class A { foo () { return function () { foo = this }; } }', - parserOptions: { ecmaVersion: 2022 }, + languageOptions: { parserOptions: { ecmaVersion: 2022 } }, errors: [ { messageId: 'missingThis', @@ -417,7 +433,7 @@ ruleTester.run('class-methods-use-this', rule, { }, { code: 'class A { foo () { return class { static { this; } } } }', - parserOptions: { ecmaVersion: 2022 }, + languageOptions: { parserOptions: { ecmaVersion: 2022 } }, errors: [ { messageId: 'missingThis', diff --git a/packages/eslint-plugin/tests/rules/class-methods-use-this/class-methods-use-this.test.ts b/packages/eslint-plugin/tests/rules/class-methods-use-this/class-methods-use-this.test.ts index 31303569beab..575daef11a8b 100644 --- a/packages/eslint-plugin/tests/rules/class-methods-use-this/class-methods-use-this.test.ts +++ b/packages/eslint-plugin/tests/rules/class-methods-use-this/class-methods-use-this.test.ts @@ -2,9 +2,7 @@ import { RuleTester } from '@typescript-eslint/rule-tester'; import rule from '../../../src/rules/class-methods-use-this'; -const ruleTester = new RuleTester({ - parser: '@typescript-eslint/parser', -}); +const ruleTester = new RuleTester(); ruleTester.run('class-methods-use-this', rule, { valid: [ diff --git a/packages/eslint-plugin/tests/rules/consistent-generic-constructors.test.ts b/packages/eslint-plugin/tests/rules/consistent-generic-constructors.test.ts index f21dac8f6399..f7f50ea44524 100644 --- a/packages/eslint-plugin/tests/rules/consistent-generic-constructors.test.ts +++ b/packages/eslint-plugin/tests/rules/consistent-generic-constructors.test.ts @@ -2,9 +2,7 @@ import { noFormat, RuleTester } from '@typescript-eslint/rule-tester'; import rule from '../../src/rules/consistent-generic-constructors'; -const ruleTester = new RuleTester({ - parser: '@typescript-eslint/parser', -}); +const ruleTester = new RuleTester(); ruleTester.run('consistent-generic-constructors', rule, { valid: [ diff --git a/packages/eslint-plugin/tests/rules/consistent-indexed-object-style.test.ts b/packages/eslint-plugin/tests/rules/consistent-indexed-object-style.test.ts index 2b1aa4661a99..30f98f976e5c 100644 --- a/packages/eslint-plugin/tests/rules/consistent-indexed-object-style.test.ts +++ b/packages/eslint-plugin/tests/rules/consistent-indexed-object-style.test.ts @@ -2,9 +2,7 @@ import { RuleTester } from '@typescript-eslint/rule-tester'; import rule from '../../src/rules/consistent-indexed-object-style'; -const ruleTester = new RuleTester({ - parser: '@typescript-eslint/parser', -}); +const ruleTester = new RuleTester(); ruleTester.run('consistent-indexed-object-style', rule, { valid: [ diff --git a/packages/eslint-plugin/tests/rules/consistent-return.test.ts b/packages/eslint-plugin/tests/rules/consistent-return.test.ts index cb74ca29b8c3..b26b70654dee 100644 --- a/packages/eslint-plugin/tests/rules/consistent-return.test.ts +++ b/packages/eslint-plugin/tests/rules/consistent-return.test.ts @@ -6,11 +6,11 @@ import { getFixturesRootDir } from '../RuleTester'; const rootDir = getFixturesRootDir(); const ruleTester = new RuleTester({ - parser: '@typescript-eslint/parser', - parserOptions: { - ecmaVersion: 2021, - tsconfigRootDir: rootDir, - project: './tsconfig.json', + languageOptions: { + parserOptions: { + tsconfigRootDir: rootDir, + project: './tsconfig.json', + }, }, }); diff --git a/packages/eslint-plugin/tests/rules/consistent-type-assertions.test.ts b/packages/eslint-plugin/tests/rules/consistent-type-assertions.test.ts index fde1ed0d0dd5..29eb3d5297a0 100644 --- a/packages/eslint-plugin/tests/rules/consistent-type-assertions.test.ts +++ b/packages/eslint-plugin/tests/rules/consistent-type-assertions.test.ts @@ -10,7 +10,7 @@ import rule from '../../src/rules/consistent-type-assertions'; import { dedupeTestCases } from '../dedupeTestCases'; import { batchedSingleLineTests } from '../RuleTester'; -const ruleTester = new RuleTester({ parser: '@typescript-eslint/parser' }); +const ruleTester = new RuleTester(); const ANGLE_BRACKET_TESTS_EXCEPT_CONST_CASE = ` const x = new Generic(); @@ -136,7 +136,7 @@ ruleTester.run('consistent-type-assertions', rule, { { code: 'const x = [1] as const;', options: [{ assertionStyle: 'never' }] }, { code: 'const bar = ;', - parserOptions: { ecmaFeatures: { jsx: true } }, + languageOptions: { parserOptions: { ecmaFeatures: { jsx: true } } }, options: [ { assertionStyle: 'as', @@ -533,7 +533,7 @@ ruleTester.run('consistent-type-assertions', rule, { { code: 'const foo = ;', output: null, - parserOptions: { ecmaFeatures: { jsx: true } }, + languageOptions: { parserOptions: { ecmaFeatures: { jsx: true } } }, options: [{ assertionStyle: 'never' }], errors: [{ messageId: 'never', line: 1 }], }, diff --git a/packages/eslint-plugin/tests/rules/consistent-type-definitions.test.ts b/packages/eslint-plugin/tests/rules/consistent-type-definitions.test.ts index b0a2092994d3..4fa17b04e988 100644 --- a/packages/eslint-plugin/tests/rules/consistent-type-definitions.test.ts +++ b/packages/eslint-plugin/tests/rules/consistent-type-definitions.test.ts @@ -2,9 +2,7 @@ import { noFormat, RuleTester } from '@typescript-eslint/rule-tester'; import rule from '../../src/rules/consistent-type-definitions'; -const ruleTester = new RuleTester({ - parser: '@typescript-eslint/parser', -}); +const ruleTester = new RuleTester(); ruleTester.run('consistent-type-definitions', rule, { valid: [ diff --git a/packages/eslint-plugin/tests/rules/consistent-type-exports.test.ts b/packages/eslint-plugin/tests/rules/consistent-type-exports.test.ts index 4d4bb3b5ae1d..209a285c7ee1 100644 --- a/packages/eslint-plugin/tests/rules/consistent-type-exports.test.ts +++ b/packages/eslint-plugin/tests/rules/consistent-type-exports.test.ts @@ -6,12 +6,11 @@ import { getFixturesRootDir } from '../RuleTester'; const rootDir = getFixturesRootDir(); const ruleTester = new RuleTester({ - parser: '@typescript-eslint/parser', - parserOptions: { - ecmaVersion: 2020, - sourceType: 'module', - tsconfigRootDir: rootDir, - project: './tsconfig.json', + languageOptions: { + parserOptions: { + tsconfigRootDir: rootDir, + project: './tsconfig.json', + }, }, }); diff --git a/packages/eslint-plugin/tests/rules/consistent-type-imports.test.ts b/packages/eslint-plugin/tests/rules/consistent-type-imports.test.ts index a751730cfd34..48d918a6436e 100644 --- a/packages/eslint-plugin/tests/rules/consistent-type-imports.test.ts +++ b/packages/eslint-plugin/tests/rules/consistent-type-imports.test.ts @@ -19,8 +19,7 @@ const PARSER_OPTION_COMBOS = [ for (const parserOptions of PARSER_OPTION_COMBOS) { describe(`experimentalDecorators: ${parserOptions.experimentalDecorators} + emitDecoratorMetadata: ${parserOptions.emitDecoratorMetadata}`, () => { const ruleTester = new RuleTester({ - parser: '@typescript-eslint/parser', - parserOptions, + languageOptions: { parserOptions }, }); ruleTester.run('consistent-type-imports', rule, { @@ -290,9 +289,11 @@ export const ComponentFoo: React.FC = () => { return
Foo Foo
; }; `, - parserOptions: { - ecmaFeatures: { - jsx: true, + languageOptions: { + parserOptions: { + ecmaFeatures: { + jsx: true, + }, }, }, }, @@ -304,11 +305,13 @@ export const ComponentFoo: h.FC = () => { return
Foo Foo
; }; `, - parserOptions: { - ecmaFeatures: { - jsx: true, + languageOptions: { + parserOptions: { + ecmaFeatures: { + jsx: true, + }, + jsxPragma: 'h', }, - jsxPragma: 'h', }, }, { @@ -319,11 +322,13 @@ export const ComponentFoo: Fragment = () => { return <>Foo Foo; }; `, - parserOptions: { - ecmaFeatures: { - jsx: true, + languageOptions: { + parserOptions: { + ecmaFeatures: { + jsx: true, + }, + jsxFragmentName: 'Fragment', }, - jsxFragmentName: 'Fragment', }, }, ` @@ -1946,10 +1951,11 @@ function test(foo: Foo) {} // the special ignored config case describe('experimentalDecorators: true + emitDecoratorMetadata: true', () => { const ruleTester = new RuleTester({ - parser: '@typescript-eslint/parser', - parserOptions: { - experimentalDecorators: true, - emitDecoratorMetadata: true, + languageOptions: { + parserOptions: { + experimentalDecorators: true, + emitDecoratorMetadata: true, + }, }, }); diff --git a/packages/eslint-plugin/tests/rules/default-param-last.test.ts b/packages/eslint-plugin/tests/rules/default-param-last.test.ts index 33be682be7c5..bcad5e8a6d62 100644 --- a/packages/eslint-plugin/tests/rules/default-param-last.test.ts +++ b/packages/eslint-plugin/tests/rules/default-param-last.test.ts @@ -2,9 +2,7 @@ import { RuleTester } from '@typescript-eslint/rule-tester'; import rule from '../../src/rules/default-param-last'; -const ruleTester = new RuleTester({ - parser: '@typescript-eslint/parser', -}); +const ruleTester = new RuleTester(); ruleTester.run('default-param-last', rule, { valid: [ diff --git a/packages/eslint-plugin/tests/rules/dot-notation.test.ts b/packages/eslint-plugin/tests/rules/dot-notation.test.ts index b799ef3243c3..580ddef5715c 100644 --- a/packages/eslint-plugin/tests/rules/dot-notation.test.ts +++ b/packages/eslint-plugin/tests/rules/dot-notation.test.ts @@ -6,11 +6,11 @@ import { getFixturesRootDir } from '../RuleTester'; const rootPath = getFixturesRootDir(); const ruleTester = new RuleTester({ - parser: '@typescript-eslint/parser', - parserOptions: { - sourceType: 'module', - tsconfigRootDir: rootPath, - project: './tsconfig.json', + languageOptions: { + parserOptions: { + tsconfigRootDir: rootPath, + project: './tsconfig.json', + }, }, }); @@ -51,19 +51,28 @@ ruleTester.run('dot-notation', rule, { code: "a['lots_of_snake_case'];", options: [{ allowPattern: '^[a-z]+(_[a-z]+)+$' }], }, - { code: 'a[`time${range}`];', parserOptions: { ecmaVersion: 6 } }, + { + code: 'a[`time${range}`];', + languageOptions: { parserOptions: { ecmaVersion: 6 } }, + }, { code: 'a[`while`];', options: [{ allowKeywords: false }], - parserOptions: { ecmaVersion: 6 }, + languageOptions: { parserOptions: { ecmaVersion: 6 } }, + }, + { + code: 'a[`time range`];', + languageOptions: { parserOptions: { ecmaVersion: 6 } }, }, - { code: 'a[`time range`];', parserOptions: { ecmaVersion: 6 } }, 'a.true;', 'a.null;', 'a[undefined];', 'a[void 0];', 'a[b()];', - { code: 'a[/(?0)/];', parserOptions: { ecmaVersion: 2018 } }, + { + code: 'a[/(?0)/];', + languageOptions: { parserOptions: { ecmaVersion: 2018 } }, + }, { code: ` @@ -117,7 +126,7 @@ dingus?.nested.property; dingus?.nested['hello']; `, options: [{ allowIndexSignaturePropertyAccess: true }], - parserOptions: { ecmaVersion: 2020 }, + languageOptions: { parserOptions: { ecmaVersion: 2020 } }, }, { code: ` @@ -198,7 +207,7 @@ x.pub_prop = 123; { code: "a['time'];", output: 'a.time;', - parserOptions: { ecmaVersion: 6 }, + languageOptions: { parserOptions: { ecmaVersion: 6 } }, errors: [{ messageId: 'useDot', data: { key: '"time"' } }], }, { diff --git a/packages/eslint-plugin/tests/rules/explicit-function-return-type.test.ts b/packages/eslint-plugin/tests/rules/explicit-function-return-type.test.ts index 0e8c5182b7d3..ae80f009727b 100644 --- a/packages/eslint-plugin/tests/rules/explicit-function-return-type.test.ts +++ b/packages/eslint-plugin/tests/rules/explicit-function-return-type.test.ts @@ -2,9 +2,7 @@ import { RuleTester } from '@typescript-eslint/rule-tester'; import rule from '../../src/rules/explicit-function-return-type'; -const ruleTester = new RuleTester({ - parser: '@typescript-eslint/parser', -}); +const ruleTester = new RuleTester(); ruleTester.run('explicit-function-return-type', rule, { valid: [ @@ -185,45 +183,55 @@ class App { { code: 'const foo =