diff --git a/tests/lib/rules/component-name-in-template-casing.js b/tests/lib/rules/component-name-in-template-casing.js index 34e3574fc..9ad24fad3 100644 --- a/tests/lib/rules/component-name-in-template-casing.js +++ b/tests/lib/rules/component-name-in-template-casing.js @@ -4,7 +4,6 @@ 'use strict' const rule = require('../../../lib/rules/component-name-in-template-casing') -const semver = require('semver') const RuleTester = require('../../eslint-compat').RuleTester const tester = new RuleTester({ @@ -218,42 +217,36 @@ tester.run('component-name-in-template-casing', rule, { }, // type-only imports - ...(semver.gte( - require('@typescript-eslint/parser/package.json').version, - '5.0.0' - ) - ? [ - { - code: ` - - - `, - options: ['PascalCase', { registeredComponentsOnly: true }], - languageOptions: { - parserOptions: { - parser: require.resolve('@typescript-eslint/parser') - } - } - } - ] - : []) + { + code: ` + + + + `, + options: ['PascalCase', { registeredComponentsOnly: true }], + languageOptions: { + parserOptions: { + parser: require.resolve('@typescript-eslint/parser') + } + } + } ], invalid: [ { @@ -1305,106 +1298,99 @@ tester.run('component-name-in-template-casing', rule, { ] }, // type-only imports - ...(semver.gte( - require('@typescript-eslint/parser/package.json').version, - '5.0.0' - ) - ? [ - { - code: ` - + { + code: ` + - - `, - options: ['PascalCase', { registeredComponentsOnly: false }], - languageOptions: { - parserOptions: { - parser: require.resolve('@typescript-eslint/parser') - } - }, - output: ` - + + `, + output: ` + - - `, - errors: [ - { - message: 'Component name "foo" is not PascalCase.', - line: 13, - column: 17, - endLine: 13, - endColumn: 21 - }, - { - message: 'Component name "hello-world1" is not PascalCase.', - line: 14, - column: 17, - endLine: 14, - endColumn: 30 - }, - { - message: 'Component name "hello-world2" is not PascalCase.', - line: 15, - column: 17, - endLine: 15, - endColumn: 30 - }, - { - message: 'Component name "hello-world3" is not PascalCase.', - line: 16, - column: 17, - endLine: 16, - endColumn: 30 - }, - { - message: 'Component name "hello-world4" is not PascalCase.', - line: 17, - column: 17, - endLine: 17, - endColumn: 30 - }, - { - message: 'Component name "hello-world5" is not PascalCase.', - line: 18, - column: 17, - endLine: 18, - endColumn: 30 - } - ] - } - ] - : []) + + `, + options: ['PascalCase', { registeredComponentsOnly: false }], + languageOptions: { + parserOptions: { + parser: require.resolve('@typescript-eslint/parser') + } + }, + errors: [ + { + message: 'Component name "foo" is not PascalCase.', + line: 13, + column: 11, + endLine: 13, + endColumn: 15 + }, + { + message: 'Component name "hello-world1" is not PascalCase.', + line: 14, + column: 11, + endLine: 14, + endColumn: 24 + }, + { + message: 'Component name "hello-world2" is not PascalCase.', + line: 15, + column: 11, + endLine: 15, + endColumn: 24 + }, + { + message: 'Component name "hello-world3" is not PascalCase.', + line: 16, + column: 11, + endLine: 16, + endColumn: 24 + }, + { + message: 'Component name "hello-world4" is not PascalCase.', + line: 17, + column: 11, + endLine: 17, + endColumn: 24 + }, + { + message: 'Component name "hello-world5" is not PascalCase.', + line: 18, + column: 11, + endLine: 18, + endColumn: 24 + } + ] + } ] }) diff --git a/tests/lib/rules/no-boolean-default.js b/tests/lib/rules/no-boolean-default.js index c3132a5fd..56e9cd1cc 100644 --- a/tests/lib/rules/no-boolean-default.js +++ b/tests/lib/rules/no-boolean-default.js @@ -4,7 +4,6 @@ */ 'use strict' -const semver = require('semver') const rule = require('../../../lib/rules/no-boolean-default') const RuleTester = require('../../eslint-compat').RuleTester @@ -484,15 +483,9 @@ ruleTester.run('no-boolean-default', rule, { } ] }, - ...(semver.lt( - require('@typescript-eslint/parser/package.json').version, - '4.0.0' - ) - ? [] - : [ - { - filename: 'test.vue', - code: ` + { + filename: 'test.vue', + code: ` `, - languageOptions: { - parser: require('vue-eslint-parser'), - parserOptions: { - parser: require.resolve('@typescript-eslint/parser') - } - }, - errors: [ - { - message: - 'Boolean prop should not set a default (Vue defaults it to false).', - line: 7, - column: 14, - endLine: 7, - endColumn: 19 - } - ] - }, - { - filename: 'test.vue', - code: ` + languageOptions: { + parser: require('vue-eslint-parser'), + parserOptions: { + parser: require.resolve('@typescript-eslint/parser') + } + }, + errors: [ + { + message: + 'Boolean prop should not set a default (Vue defaults it to false).', + line: 7, + column: 14, + endLine: 7, + endColumn: 19 + } + ] + }, + { + filename: 'test.vue', + code: ` `, - languageOptions: { - parser: require('vue-eslint-parser'), - parserOptions: { - parser: require.resolve('@typescript-eslint/parser') - } - }, - options: ['default-false'], - errors: [ - { - message: 'Boolean prop should only be defaulted to false.', - line: 7, - column: 14, - endLine: 7, - endColumn: 18 - } - ] - } - ]), + options: ['default-false'], + languageOptions: { + parser: require('vue-eslint-parser'), + parserOptions: { + parser: require.resolve('@typescript-eslint/parser') + } + }, + errors: [ + { + message: 'Boolean prop should only be defaulted to false.', + line: 7, + column: 14, + endLine: 7, + endColumn: 18 + } + ] + }, { filename: 'test.vue', code: ` diff --git a/tests/lib/rules/no-export-in-script-setup.js b/tests/lib/rules/no-export-in-script-setup.js index bf24b8682..e678d5f99 100644 --- a/tests/lib/rules/no-export-in-script-setup.js +++ b/tests/lib/rules/no-export-in-script-setup.js @@ -42,11 +42,10 @@ ruleTester.run('no-export-in-script-setup', rule, { ` }, - ...(semver.gte( - require('@typescript-eslint/parser/package.json').version, - '5.4.0' - ) && - semver.satisfies(require('typescript/package.json').version, '>=4.5.0-0') + ...(semver.satisfies( + require('typescript/package.json').version, + '>=4.5.0-0' + ) ? [ { filename: 'test.vue', diff --git a/tests/lib/rules/no-implicit-coercion.js b/tests/lib/rules/no-implicit-coercion.js index 7a2f89359..78e8ac91e 100644 --- a/tests/lib/rules/no-implicit-coercion.js +++ b/tests/lib/rules/no-implicit-coercion.js @@ -49,9 +49,7 @@ tester.run('no-implicit-coercion', rule, { ] }, ``, - ...(semver.gte(ESLint.version, '8.28.0') - ? [``] - : []), + ``, { filename: 'test.vue', code: ``, @@ -238,40 +236,35 @@ tester.run('no-implicit-coercion', rule, { } ] }, - ...(semver.gte(ESLint.version, '7.24.0') - ? [ - { - filename: 'test.vue', - code: ``, - output: semver.gte(ESLint.version, '9.0.0') - ? null - : ``, - options: [ - { - disallowTemplateShorthand: true - } - ], - errors: [ - { - message: getExpectedErrorMessage('String(foo)'), - line: 1, - column: 27, - endLine: 1, - endColumn: 35, - suggestions: semver.gte(ESLint.version, '9.0.0') - ? [ - { - messageId: 'useRecommendation', - data: { recommendation: 'String(foo)' }, - output: - '' - } - ] - : [] - } - ] - } - ] - : []) + { + filename: 'test.vue', + code: ``, + output: semver.gte(ESLint.version, '9.0.0') + ? null + : ``, + options: [ + { + disallowTemplateShorthand: true + } + ], + errors: [ + { + message: getExpectedErrorMessage('String(foo)'), + line: 1, + column: 27, + endLine: 1, + endColumn: 35, + suggestions: semver.gte(ESLint.version, '9.0.0') + ? [ + { + messageId: 'useRecommendation', + data: { recommendation: 'String(foo)' }, + output: '' + } + ] + : [] + } + ] + } ] }) diff --git a/tests/lib/rules/no-loss-of-precision.js b/tests/lib/rules/no-loss-of-precision.js index a9d632862..1b60a33ca 100644 --- a/tests/lib/rules/no-loss-of-precision.js +++ b/tests/lib/rules/no-loss-of-precision.js @@ -4,8 +4,7 @@ */ 'use strict' -const { RuleTester, ESLint } = require('../../eslint-compat') -const semver = require('semver') +const { RuleTester } = require('../../eslint-compat') const rule = require('../../../lib/rules/no-loss-of-precision') const tester = new RuleTester({ @@ -17,86 +16,66 @@ const tester = new RuleTester({ }) tester.run('no-loss-of-precision', rule, { valid: [ - ...(semver.gte(ESLint.version, '7.1.0') - ? [ - { - filename: 'test.vue', - code: ` - - ` - }, - { - filename: 'test.vue', - code: ` - - ` - } - ] - : []) + { + filename: 'test.vue', + code: ` + + ` + }, + { + filename: 'test.vue', + code: ` + + ` + } ], invalid: [ - ...(semver.gte(ESLint.version, '7.1.0') - ? [ - { - filename: 'test.vue', - code: ` - - `, - errors: [ - { - message: 'This number literal will lose precision at runtime.', - line: 3, - column: 17, - endLine: 3, - endColumn: 37 - }, - { - message: 'This number literal will lose precision at runtime.', - line: 4, - column: 17, - endLine: 4, - endColumn: 39 - } - ] - }, - { - filename: 'test.vue', - code: ` - - `, - errors: [ - { - message: 'This number literal will lose precision at runtime.', - line: 3, - column: 34, - endLine: 3, - endColumn: 54 - } - ] - } - ] - : [ - { - filename: 'test.vue', - code: ` - - `, - errors: [ - 'Failed to extend ESLint core rule "no-loss-of-precision". You may be able to use this rule by upgrading the version of ESLint. If you cannot upgrade it, turn off this rule.' - ] - } - ]) + { + filename: 'test.vue', + code: ` + + `, + errors: [ + { + message: 'This number literal will lose precision at runtime.', + line: 3, + column: 13, + endLine: 3, + endColumn: 33 + }, + { + message: 'This number literal will lose precision at runtime.', + line: 4, + column: 13, + endLine: 4, + endColumn: 35 + } + ] + }, + { + filename: 'test.vue', + code: ` + + `, + errors: [ + { + message: 'This number literal will lose precision at runtime.', + line: 3, + column: 30, + endLine: 3, + endColumn: 50 + } + ] + } ] }) diff --git a/tests/lib/rules/no-reserved-keys.js b/tests/lib/rules/no-reserved-keys.js index 277c12c92..7ece338f1 100644 --- a/tests/lib/rules/no-reserved-keys.js +++ b/tests/lib/rules/no-reserved-keys.js @@ -4,7 +4,6 @@ */ 'use strict' -const semver = require('semver') const rule = require('../../../lib/rules/no-reserved-keys') const RuleTester = require('../../eslint-compat').RuleTester @@ -293,15 +292,9 @@ ruleTester.run('no-reserved-keys', rule, { } ] }, - ...(semver.lt( - require('@typescript-eslint/parser/package.json').version, - '4.0.0' - ) - ? [] - : [ - { - filename: 'test.vue', - code: ` + { + filename: 'test.vue', + code: ` `, - languageOptions: { - parser: require('vue-eslint-parser'), - ecmaVersion: 6, - parserOptions: { - parser: require.resolve('@typescript-eslint/parser') - } - }, - errors: [ - { - message: "Key '$el' is reserved.", - line: 4 - } - ] - }, - { - filename: 'test.vue', - code: ` + languageOptions: { + parser: require('vue-eslint-parser'), + ecmaVersion: 6, + parserOptions: { + parser: require.resolve('@typescript-eslint/parser') + } + }, + errors: [ + { + message: "Key '$el' is reserved.", + line: 4 + } + ] + }, + { + filename: 'test.vue', + code: ` `, - languageOptions: { - parser: require('vue-eslint-parser'), - ecmaVersion: 6, - parserOptions: { - parser: require.resolve('@typescript-eslint/parser') - } - }, - errors: [ - { - message: "Key '$el' is reserved.", - line: 4 - } - ] - } - ]) + languageOptions: { + parser: require('vue-eslint-parser'), + ecmaVersion: 6, + parserOptions: { + parser: require.resolve('@typescript-eslint/parser') + } + }, + errors: [ + { + message: "Key '$el' is reserved.", + line: 4 + } + ] + } ] }) diff --git a/tests/lib/rules/no-restricted-props.js b/tests/lib/rules/no-restricted-props.js index a91615e15..e1d55d090 100644 --- a/tests/lib/rules/no-restricted-props.js +++ b/tests/lib/rules/no-restricted-props.js @@ -3,7 +3,6 @@ */ 'use strict' -const semver = require('semver') const RuleTester = require('../../eslint-compat').RuleTester const rule = require('../../../lib/rules/no-restricted-props') const { @@ -414,15 +413,9 @@ tester.run('no-restricted-props', rule, { } ] }, - ...(semver.lt( - require('@typescript-eslint/parser/package.json').version, - '4.0.0' - ) - ? [] - : [ - { - filename: 'test.vue', - code: ` + { + filename: 'test.vue', + code: ` `, - languageOptions: { - parserOptions: { - parser: require.resolve('@typescript-eslint/parser') - } - }, - options: [{ name: 'foo', suggest: 'Foo' }], - errors: [ - { - message: 'Using `foo` props is not allowed.', - line: 4, - suggestions: [ - { - desc: 'Instead, change to `Foo`.', - output: ` + options: [{ name: 'foo', suggest: 'Foo' }], + languageOptions: { + parserOptions: { + parser: require.resolve('@typescript-eslint/parser') + } + }, + errors: [ + { + message: 'Using `foo` props is not allowed.', + line: 4, + suggestions: [ + { + desc: 'Instead, change to `Foo`.', + output: ` ` - } - ] - } - ] - }, - { - filename: 'test.vue', - code: ` + } + ] + } + ] + }, + { + filename: 'test.vue', + code: ` `, - languageOptions: { - parserOptions: { - parser: require.resolve('@typescript-eslint/parser') - } - }, - options: [{ name: 'foo', suggest: 'Foo' }], - errors: [ - { - message: 'Using `foo` props is not allowed.', - line: 4, - suggestions: [ - { - desc: 'Instead, change to `Foo`.', - output: ` + options: [{ name: 'foo', suggest: 'Foo' }], + languageOptions: { + parserOptions: { + parser: require.resolve('@typescript-eslint/parser') + } + }, + errors: [ + { + message: 'Using `foo` props is not allowed.', + line: 4, + suggestions: [ + { + desc: 'Instead, change to `Foo`.', + output: ` ` - } - ] - } - ] - }, - { - filename: 'test.vue', - code: ` + } + ] + } + ] + }, + { + filename: 'test.vue', + code: ` @@ -517,20 +510,20 @@ tester.run('no-restricted-props', rule, { ) `, - languageOptions: { - parserOptions: { - parser: require.resolve('@typescript-eslint/parser') - } - }, - options: [{ name: 'foo', suggest: 'Foo' }], - errors: [ - { - message: 'Using `foo` props is not allowed.', - line: 7, - suggestions: [ - { - desc: 'Instead, change to `Foo`.', - output: ` + options: [{ name: 'foo', suggest: 'Foo' }], + languageOptions: { + parserOptions: { + parser: require.resolve('@typescript-eslint/parser') + } + }, + errors: [ + { + message: 'Using `foo` props is not allowed.', + line: 7, + suggestions: [ + { + desc: 'Instead, change to `Foo`.', + output: ` @@ -545,14 +538,14 @@ tester.run('no-restricted-props', rule, { ) ` - } - ] - } - ] - }, - { - filename: 'test.vue', - code: ` + } + ] + } + ] + }, + { + filename: 'test.vue', + code: ` `, - languageOptions: { - parserOptions: { - parser: require.resolve('@typescript-eslint/parser') - } - }, - options: [{ name: 'foo', suggest: 'Foo' }], - errors: [ - { - message: 'Using `foo` props is not allowed.', - line: 9, - suggestions: [ - { - desc: 'Instead, change to `Foo`.', - output: ` + options: [{ name: 'foo', suggest: 'Foo' }], + languageOptions: { + parserOptions: { + parser: require.resolve('@typescript-eslint/parser') + } + }, + errors: [ + { + message: 'Using `foo` props is not allowed.', + line: 9, + suggestions: [ + { + desc: 'Instead, change to `Foo`.', + output: ` ` - } - ] - } - ] - }, - { - code: ` - - `, - ...getTypeScriptFixtureTestOptions(), - options: [{ name: 'foo', suggest: 'Foo' }], - errors: [ - { - message: 'Using `foo` props is not allowed.', - line: 4, - suggestions: null - } - ] - } - ]), + } + ] + } + ] + }, + { + code: ` + + `, + options: [{ name: 'foo', suggest: 'Foo' }], + errors: [ + { + message: 'Using `foo` props is not allowed.', + line: 4, + suggestions: null + } + ], + ...getTypeScriptFixtureTestOptions() + }, { filename: 'test.vue', code: ` diff --git a/tests/lib/rules/no-undef-components.js b/tests/lib/rules/no-undef-components.js index 37a3bec68..f87f9dcd5 100644 --- a/tests/lib/rules/no-undef-components.js +++ b/tests/lib/rules/no-undef-components.js @@ -6,7 +6,6 @@ const RuleTester = require('../../eslint-compat').RuleTester const rule = require('../../../lib/rules/no-undef-components') -const semver = require('semver') const tester = new RuleTester({ languageOptions: { @@ -746,14 +745,9 @@ tester.run('no-undef-components', rule, { } ] }, - ...(semver.gte( - require('@typescript-eslint/parser/package.json').version, - '5.0.0' - ) - ? [ - { - filename: 'test.vue', - code: ` + { + filename: 'test.vue', + code: ` - `, - languageOptions: { - parser: require('vue-eslint-parser'), - ...languageOptions, - parserOptions: { - parser: require.resolve('@typescript-eslint/parser') - } - }, - errors: [ - { - message: 'Prop "greeting_text" is not in camelCase.', - line: 4, - column: 15, - endLine: 4, - endColumn: 36 - } - ] - } - ]), + { + filename: 'test.vue', + code: ` + + `, + languageOptions: { + parser: require('vue-eslint-parser'), + ...languageOptions, + parserOptions: { + parser: require.resolve('@typescript-eslint/parser') + } + }, + errors: [ + { + message: 'Prop "greeting_text" is not in camelCase.', + line: 4, + column: 9, + endLine: 4, + endColumn: 30 + } + ] + }, { filename: 'test.vue', code: ` diff --git a/tests/lib/rules/require-default-prop.js b/tests/lib/rules/require-default-prop.js index 43160dfda..cbca0ee19 100644 --- a/tests/lib/rules/require-default-prop.js +++ b/tests/lib/rules/require-default-prop.js @@ -4,7 +4,6 @@ */ 'use strict' -const semver = require('semver') const rule = require('../../../lib/rules/require-default-prop') const RuleTester = require('../../eslint-compat').RuleTester const languageOptions = { @@ -655,37 +654,30 @@ ruleTester.run('require-default-prop', rule, { } ] }, - ...(semver.lt( - require('@typescript-eslint/parser/package.json').version, - '4.0.0' - ) - ? [] - : [ - { - filename: 'test.vue', - code: ` - - `, - languageOptions: { - parser: require('vue-eslint-parser'), - ...languageOptions, - parserOptions: { - parser: require.resolve('@typescript-eslint/parser') - } - }, - errors: [ - { - message: "Prop 'foo' requires default value to be set.", - line: 4 - } - ] - } - ]), + { + filename: 'test.vue', + code: ` + + `, + languageOptions: { + parser: require('vue-eslint-parser'), + ...languageOptions, + parserOptions: { + parser: require.resolve('@typescript-eslint/parser') + } + }, + errors: [ + { + message: "Prop 'foo' requires default value to be set.", + line: 4 + } + ] + }, { filename: 'test.vue', code: ` diff --git a/tests/lib/rules/space-in-parens.js b/tests/lib/rules/space-in-parens.js index d6218216d..9b1509f07 100644 --- a/tests/lib/rules/space-in-parens.js +++ b/tests/lib/rules/space-in-parens.js @@ -3,21 +3,9 @@ */ 'use strict' -const { RuleTester, ESLint } = require('../../eslint-compat') -const semver = require('semver') +const { RuleTester } = require('../../eslint-compat') const rule = require('../../../lib/rules/space-in-parens') -const errorMessage = semver.lt(ESLint.version, '6.4.0') - ? (obj) => { - const messageId = obj.messageId - delete obj.messageId - obj.message = messageId.startsWith('missing') - ? 'There must be a space inside this paren.' - : 'There should be no spaces inside this paren.' - return obj - } - : (obj) => obj - const tester = new RuleTester({ languageOptions: { parser: require('vue-eslint-parser'), ecmaVersion: 2015 } }) @@ -76,14 +64,14 @@ tester.run('space-in-parens', rule, { /> `, errors: [ - errorMessage({ + { messageId: 'rejectedOpeningSpace', line: 4 - }), - errorMessage({ + }, + { messageId: 'rejectedClosingSpace', line: 4 - }) + } ] }, { @@ -101,14 +89,14 @@ tester.run('space-in-parens', rule, { `, options: ['always'], errors: [ - errorMessage({ + { messageId: 'missingOpeningSpace', line: 4 - }), - errorMessage({ + }, + { messageId: 'missingClosingSpace', line: 4 - }) + } ] }, { @@ -125,14 +113,14 @@ tester.run('space-in-parens', rule, { > `, errors: [ - errorMessage({ + { messageId: 'rejectedOpeningSpace', line: 4 - }), - errorMessage({ + }, + { messageId: 'rejectedClosingSpace', line: 4 - }) + } ] }, { @@ -150,14 +138,14 @@ tester.run('space-in-parens', rule, { `, options: ['always'], errors: [ - errorMessage({ + { messageId: 'missingOpeningSpace', line: 4 - }), - errorMessage({ + }, + { messageId: 'missingClosingSpace', line: 4 - }) + } ] }, { @@ -174,14 +162,14 @@ tester.run('space-in-parens', rule, { > `, errors: [ - errorMessage({ + { messageId: 'rejectedOpeningSpace', line: 4 - }), - errorMessage({ + }, + { messageId: 'rejectedClosingSpace', line: 4 - }) + } ] }, { @@ -199,14 +187,14 @@ tester.run('space-in-parens', rule, { `, options: ['always'], errors: [ - errorMessage({ + { messageId: 'missingOpeningSpace', line: 4 - }), - errorMessage({ + }, + { messageId: 'missingClosingSpace', line: 4 - }) + } ] }, @@ -225,14 +213,14 @@ tester.run('space-in-parens', rule, { } `, errors: [ - errorMessage({ + { messageId: 'rejectedOpeningSpace', line: 4 - }), - errorMessage({ + }, + { messageId: 'rejectedClosingSpace', line: 4 - }) + } ] } ] diff --git a/tests/lib/rules/space-infix-ops.js b/tests/lib/rules/space-infix-ops.js index 0325884a7..d05e25170 100644 --- a/tests/lib/rules/space-infix-ops.js +++ b/tests/lib/rules/space-infix-ops.js @@ -3,17 +3,14 @@ */ 'use strict' -const { RuleTester, ESLint } = require('../../eslint-compat') -const semver = require('semver') +const { RuleTester } = require('../../eslint-compat') const rule = require('../../../lib/rules/space-infix-ops') const tester = new RuleTester({ languageOptions: { parser: require('vue-eslint-parser'), ecmaVersion: 2015 } }) -const message = semver.lt(ESLint.version, '5.10.0') - ? () => 'Infix operators must be spaced.' - : (operator) => `Operator '${operator}' must be spaced.` +const message = (operator) => `Operator '${operator}' must be spaced.` tester.run('space-infix-ops', rule, { valid: [