diff --git a/.changeset/gorgeous-colts-bathe.md b/.changeset/gorgeous-colts-bathe.md
new file mode 100644
index 000000000..e5f3a14a8
--- /dev/null
+++ b/.changeset/gorgeous-colts-bathe.md
@@ -0,0 +1,5 @@
+---
+"eslint-plugin-vue": patch
+---
+
+Updates resources
diff --git a/.changeset/rich-zebras-type.md b/.changeset/rich-zebras-type.md
new file mode 100644
index 000000000..62c2438ae
--- /dev/null
+++ b/.changeset/rich-zebras-type.md
@@ -0,0 +1,5 @@
+---
+"eslint-plugin-vue": minor
+---
+
+Changed `vue/no-negated-v-if-condition` suggestion to autofix
diff --git a/.changeset/swift-spies-nail.md b/.changeset/swift-spies-nail.md
new file mode 100644
index 000000000..6d8ffe174
--- /dev/null
+++ b/.changeset/swift-spies-nail.md
@@ -0,0 +1,5 @@
+---
+"eslint-plugin-vue": minor
+---
+
+Added new `ignoreEOLComments` option to `vue/no-multi-spaces` rule
diff --git a/.vscode/launch.json b/.vscode/launch.json
index 171c80066..997cf0bca 100644
--- a/.vscode/launch.json
+++ b/.vscode/launch.json
@@ -18,4 +18,4 @@
"console": "integratedTerminal"
}
]
-}
\ No newline at end of file
+}
diff --git a/.vscode/settings.json b/.vscode/settings.json
index 8c7be0b23..20102543c 100644
--- a/.vscode/settings.json
+++ b/.vscode/settings.json
@@ -1,6 +1,13 @@
{
"editor.tabSize": 2,
- "eslint.validate": ["javascript", "javascriptreact", "vue", "json", "jsonc", "markdown"],
+ "eslint.validate": [
+ "javascript",
+ "javascriptreact",
+ "vue",
+ "json",
+ "jsonc",
+ "markdown"
+ ],
"typescript.tsdk": "./node_modules/typescript/lib",
"vetur.validation.script": false,
"[typescript]": {
diff --git a/CHANGELOG.md b/CHANGELOG.md
index 10e8f7612..4bbb44fa6 100644
--- a/CHANGELOG.md
+++ b/CHANGELOG.md
@@ -1,25 +1,30 @@
# eslint-plugin-vue
+## 10.6.2
+
+### Patch Changes
+
+- Fixed false positives in non-intersecting conditions in [`vue/no-duplicate-class-names`](https://eslint.vuejs.org/rules/no-duplicate-class-names.html) and correctly detect duplicates in combining expressions ([#2980](https://github.com/vuejs/eslint-plugin-vue/pull/2980))
+- Fixed false positives for `TSImportType` in [`vue/script-indent`](https://eslint.vuejs.org/rules/script-indent.html) rule ([#2969](https://github.com/vuejs/eslint-plugin-vue/pull/2969))
+- Improved performance and type safety in [`vue/prefer-use-template-ref`](https://eslint.vuejs.org/rules/prefer-use-template-ref.html) ([#2982](https://github.com/vuejs/eslint-plugin-vue/pull/2982))
+
## 10.6.1
### Patch Changes
-- Fixed false positives for comments outside `` in [vue/no-multiple-template-root](https://eslint.vuejs.org/rules/no-multiple-template-root.html) rule ([#2964](https://github.com/vuejs/eslint-plugin-vue/pull/2964))
+- Fixed false positives for comments outside `` in [`vue/no-multiple-template-root`](https://eslint.vuejs.org/rules/no-multiple-template-root.html) rule ([#2964](https://github.com/vuejs/eslint-plugin-vue/pull/2964))
## 10.6.0
### Minor Changes
- Updated [`vue/no-import-compiler-macros`](https://eslint.vuejs.org/rules/no-import-compiler-macros.html) to clarify that macros are not allowed outside `',
@@ -71,44 +72,36 @@ tester.run('block-order', rule, {
// order
{
code: '',
- output: null,
options: [{ order: ['script', 'template', 'style'] }]
},
{
code: '',
- output: null,
options: [{ order: ['template', 'script', 'style'] }]
},
{
code: '',
- output: null,
options: [{ order: ['style', 'template', 'script'] }]
},
{
code: '',
- output: null,
options: [{ order: ['template', 'docs', 'script', 'style'] }]
},
{
code: '',
- output: null,
options: [{ order: ['template', 'script', 'style'] }]
},
{
code: 'text
',
- output: null,
options: [{ order: ['docs', 'script', 'template', 'style'] }]
},
{
code: '',
- output: null,
options: [
{ order: ['script[setup]', 'script:not([setup])', 'template', 'style'] }
]
},
{
code: '',
- output: null,
options: [
{
order: [['script[setup]', 'script:not([setup])', 'template'], 'style']
@@ -117,24 +110,20 @@ tester.run('block-order', rule, {
},
{
code: '',
- output: null,
options: [{ order: ['script', 'template', 'style'] }]
},
{
code: '',
- output: null,
options: [{ order: [['script', 'template'], 'style'] }]
},
{
code: '',
- output: null,
options: [
{ order: ['script:not([setup])', 'script[setup]', 'template', 'style'] }
]
},
{
code: '',
- output: null,
options: [
{
order: [['script:not([setup])', 'script[setup]', 'template'], 'style']
@@ -143,7 +132,6 @@ tester.run('block-order', rule, {
},
{
code: '',
- output: null,
options: [
{
order: [
@@ -158,7 +146,6 @@ tester.run('block-order', rule, {
},
{
code: '',
- output: null,
options: [
{
order: [
@@ -175,17 +162,14 @@ tester.run('block-order', rule, {
},
{
code: '',
- output: null,
options: [{ order: [['docs', 'script', 'template'], 'style'] }]
},
{
code: '',
- output: null,
options: [{ order: ['i18n[locale=en]', 'i18n[locale=ja]'] }]
},
{
code: '',
- output: null,
options: [{ order: ['style:not([scoped])', 'style[scoped]'] }]
},
diff --git a/tests/lib/rules/comment-directive.js b/tests/lib/rules/comment-directive.ts
similarity index 97%
rename from tests/lib/rules/comment-directive.js
rename to tests/lib/rules/comment-directive.ts
index b9acb1092..2a7efdab6 100644
--- a/tests/lib/rules/comment-directive.js
+++ b/tests/lib/rules/comment-directive.ts
@@ -3,10 +3,11 @@
* @author Toru Nagashima
*/
-'use strict'
-
-const assert = require('assert')
-const { ESLint } = require('../../eslint-compat')
+import assert from 'assert'
+import parserVue from 'vue-eslint-parser'
+import { ESLint } from '../../eslint-compat'
+import pluginVue from '../../../lib'
+import processor from '../../../lib/processor'
// Initialize linter.
const eslint = new ESLint({
@@ -14,21 +15,21 @@ const eslint = new ESLint({
overrideConfig: {
files: ['*.*'],
languageOptions: {
- parser: require('vue-eslint-parser'),
+ parser: parserVue,
ecmaVersion: 2015
},
- plugins: { vue: require('../../../lib/index') },
+ plugins: { vue: pluginVue },
rules: {
'no-unused-vars': 'error',
'vue/comment-directive': 'error',
'vue/no-parsing-error': 'error',
'vue/no-duplicate-attributes': 'error'
},
- processor: require('../../../lib/processor')
+ processor
}
})
-async function lintMessages(code) {
+async function lintMessages(code: string) {
const result = await eslint.lintText(code, { filePath: 'test.vue' })
return result[0].messages
}
@@ -357,10 +358,10 @@ describe('comment-directive', () => {
overrideConfig: {
files: ['**/*.vue'],
languageOptions: {
- parser: require('vue-eslint-parser'),
+ parser: parserVue,
ecmaVersion: 2015
},
- plugins: { vue: require('../../../lib/index') },
+ plugins: { vue: pluginVue },
rules: {
'no-unused-vars': 'error',
'vue/comment-directive': [
@@ -370,11 +371,11 @@ describe('comment-directive', () => {
'vue/no-parsing-error': 'error',
'vue/no-duplicate-attributes': 'error'
},
- processor: require('../../../lib/processor')
+ processor
}
})
- async function lintMessages(code) {
+ async function lintMessages(code: string) {
const result = await eslint.lintText(code, { filePath: 'test.vue' })
return result[0].messages
}
diff --git a/tests/lib/rules/component-definition-name-casing.js b/tests/lib/rules/component-definition-name-casing.js
index 323461729..94d5347d8 100644
--- a/tests/lib/rules/component-definition-name-casing.js
+++ b/tests/lib/rules/component-definition-name-casing.js
@@ -191,7 +191,6 @@ ruleTester.run('component-definition-name-casing', rule, {
errors: [
{
message: 'Property name "foo-bar" is not PascalCase.',
- type: 'Literal',
line: 3,
column: 17,
endLine: 3,
@@ -211,7 +210,6 @@ ruleTester.run('component-definition-name-casing', rule, {
errors: [
{
message: 'Property name "foo bar" is not PascalCase.',
- type: 'Literal',
line: 3,
column: 17,
endLine: 3,
@@ -231,7 +229,6 @@ ruleTester.run('component-definition-name-casing', rule, {
errors: [
{
message: 'Property name "foo!bar" is not PascalCase.',
- type: 'Literal',
line: 3,
column: 17,
endLine: 3,
@@ -251,7 +248,6 @@ ruleTester.run('component-definition-name-casing', rule, {
errors: [
{
message: 'Property name "foo!bar" is not PascalCase.',
- type: 'Literal',
line: 3,
column: 17,
endLine: 3,
@@ -275,7 +271,6 @@ ruleTester.run('component-definition-name-casing', rule, {
errors: [
{
message: 'Property name "foo_bar" is not PascalCase.',
- type: 'Literal',
line: 3,
column: 17,
endLine: 3,
@@ -300,7 +295,6 @@ ruleTester.run('component-definition-name-casing', rule, {
errors: [
{
message: 'Property name "foo_bar" is not PascalCase.',
- type: 'Literal',
line: 3,
column: 17,
endLine: 3,
@@ -325,7 +319,6 @@ ruleTester.run('component-definition-name-casing', rule, {
errors: [
{
message: 'Property name "foo_bar" is not kebab-case.',
- type: 'Literal',
line: 3,
column: 17,
endLine: 3,
@@ -341,7 +334,6 @@ ruleTester.run('component-definition-name-casing', rule, {
errors: [
{
message: 'Property name "foo-bar" is not PascalCase.',
- type: 'Literal',
line: 1,
column: 15,
endLine: 1,
@@ -357,7 +349,6 @@ ruleTester.run('component-definition-name-casing', rule, {
errors: [
{
message: 'Property name "foo-bar" is not PascalCase.',
- type: 'Literal',
line: 1,
column: 15,
endLine: 1,
@@ -376,7 +367,6 @@ ruleTester.run('component-definition-name-casing', rule, {
errors: [
{
message: 'Property name "foo-bar" is not PascalCase.',
- type: 'Literal',
line: 1,
column: 40,
endLine: 1,
@@ -392,7 +382,6 @@ ruleTester.run('component-definition-name-casing', rule, {
errors: [
{
message: 'Property name "foo-bar" is not PascalCase.',
- type: 'Literal',
line: 1,
column: 15,
endLine: 1,
@@ -408,7 +397,6 @@ ruleTester.run('component-definition-name-casing', rule, {
errors: [
{
message: 'Property name "foo-bar" is not PascalCase.',
- type: 'Literal',
line: 1,
column: 15,
endLine: 1,
@@ -425,7 +413,6 @@ ruleTester.run('component-definition-name-casing', rule, {
errors: [
{
message: 'Property name "foo_bar" is not PascalCase.',
- type: 'Literal',
line: 1,
column: 15,
endLine: 1,
@@ -442,7 +429,6 @@ ruleTester.run('component-definition-name-casing', rule, {
errors: [
{
message: 'Property name "foo_bar" is not kebab-case.',
- type: 'Literal',
line: 1,
column: 15,
endLine: 1,
@@ -459,7 +445,6 @@ ruleTester.run('component-definition-name-casing', rule, {
errors: [
{
message: 'Property name "foo_bar" is not kebab-case.',
- type: 'TemplateLiteral',
line: 1,
column: 15,
endLine: 1,
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/html-self-closing.js b/tests/lib/rules/html-self-closing.js
index 37991580a..b115cfa1e 100644
--- a/tests/lib/rules/html-self-closing.js
+++ b/tests/lib/rules/html-self-closing.js
@@ -56,7 +56,6 @@ tester.run('html-self-closing', rule, {
// Don't error if there are comments in their content.
{
code: '',
- output: null,
options: [{ html: { normal: 'always' } }]
},
diff --git a/tests/lib/rules/max-attributes-per-line.js b/tests/lib/rules/max-attributes-per-line.js
index 5b88f7857..8fd176be2 100644
--- a/tests/lib/rules/max-attributes-per-line.js
+++ b/tests/lib/rules/max-attributes-per-line.js
@@ -146,7 +146,6 @@ job="Vet">`,
errors: [
{
message: "'job' should be on a new line.",
- type: 'VAttribute',
line: 1,
column: 47,
endLine: 1,
@@ -170,7 +169,6 @@ age="30"
errors: [
{
message: "'age' should be on a new line.",
- type: 'VAttribute',
line: 2,
column: 25,
endLine: 2,
@@ -194,7 +192,6 @@ age="30"
errors: [
{
message: "'age' should be on a new line.",
- type: 'VAttribute',
line: 2,
column: 25,
endLine: 2,
diff --git a/tests/lib/rules/multiline-html-element-content-newline.js b/tests/lib/rules/multiline-html-element-content-newline.js
index 372d277fc..8d7d648c4 100644
--- a/tests/lib/rules/multiline-html-element-content-newline.js
+++ b/tests/lib/rules/multiline-html-element-content-newline.js
@@ -282,7 +282,6 @@ content
'Expected 1 line break after opening tag (``), but no line breaks found.',
line: 5,
column: 12,
- type: 'HTMLTagClose',
endLine: 5,
endColumn: 12
},
@@ -291,7 +290,6 @@ content
'Expected 1 line break before closing tag (`
`), but no line breaks found.',
line: 5,
column: 19,
- type: 'HTMLEndTagOpen',
endLine: 5,
endColumn: 19
}
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-constant-condition.js b/tests/lib/rules/no-constant-condition.js
index 489944a11..38b2f94f7 100644
--- a/tests/lib/rules/no-constant-condition.js
+++ b/tests/lib/rules/no-constant-condition.js
@@ -23,7 +23,6 @@ tester.run('no-constant-condition', rule, {
errors: [
{
messageId: 'unexpected',
- type: 'UnaryExpression',
line: 1,
column: 31,
endLine: 1,
@@ -36,7 +35,6 @@ tester.run('no-constant-condition', rule, {
errors: [
{
messageId: 'unexpected',
- type: 'Literal',
line: 1,
column: 36,
endLine: 1,
@@ -49,7 +47,6 @@ tester.run('no-constant-condition', rule, {
errors: [
{
messageId: 'unexpected',
- type: 'Literal',
line: 1,
column: 31,
endLine: 1,
@@ -62,7 +59,6 @@ tester.run('no-constant-condition', rule, {
errors: [
{
messageId: 'unexpected',
- type: 'ObjectExpression',
line: 1,
column: 33,
endLine: 1,
@@ -75,7 +71,6 @@ tester.run('no-constant-condition', rule, {
errors: [
{
messageId: 'unexpected',
- type: 'BinaryExpression',
line: 1,
column: 31,
endLine: 1,
@@ -88,37 +83,33 @@ tester.run('no-constant-condition', rule, {
errors: [
{
messageId: 'unexpected',
- type: 'LogicalExpression',
line: 1,
column: 31,
endLine: 1,
endColumn: 37
}
]
- }
+ },
- // failing in Node.js v8, because template literals are not supported there:
- // {
- // code: '',
- // errors: [
- // {
- // messageId: 'unexpected',
- // type: 'TemplateLiteral',
- // column: 31,
- // endColumn: 36
- // }
- // ]
- // },
- // {
- // code: '',
- // errors: [
- // {
- // messageId: 'unexpected',
- // type: 'TemplateLiteral',
- // column: 31,
- // endColumn: 33
- // }
- // ]
- // }
+ {
+ code: '',
+ errors: [
+ {
+ messageId: 'unexpected',
+ column: 31,
+ endColumn: 36
+ }
+ ]
+ },
+ {
+ code: '',
+ errors: [
+ {
+ messageId: 'unexpected',
+ column: 31,
+ endColumn: 33
+ }
+ ]
+ }
]
})
diff --git a/tests/lib/rules/no-deprecated-props-default-this.js b/tests/lib/rules/no-deprecated-props-default-this.js
index ed0b2005d..c3be42a8f 100644
--- a/tests/lib/rules/no-deprecated-props-default-this.js
+++ b/tests/lib/rules/no-deprecated-props-default-this.js
@@ -71,8 +71,7 @@ ruleTester.run('no-deprecated-props-default-this', rule, {
}
}
- `,
- errors: [{}, {}]
+ `
},
{
filename: 'test.vue',
diff --git a/tests/lib/rules/no-deprecated-vue-config-keycodes.js b/tests/lib/rules/no-deprecated-vue-config-keycodes.js
index 1a00c1c86..b0494f24d 100644
--- a/tests/lib/rules/no-deprecated-vue-config-keycodes.js
+++ b/tests/lib/rules/no-deprecated-vue-config-keycodes.js
@@ -36,7 +36,6 @@ ruleTester.run('no-deprecated-vue-config-keycodes', rule, {
message: '`Vue.config.keyCodes` are deprecated.',
line: 1,
column: 1,
- type: 'MemberExpression',
// messageId: 'unexpected',
endLine: 1,
endColumn: 20
diff --git a/tests/lib/rules/no-duplicate-class-names.js b/tests/lib/rules/no-duplicate-class-names.js
index 2384350cc..4935bb81c 100644
--- a/tests/lib/rules/no-duplicate-class-names.js
+++ b/tests/lib/rules/no-duplicate-class-names.js
@@ -56,6 +56,18 @@ tester.run('no-duplicate-class-names', rule, {
{
filename: 'class-object-duplicate-value.vue',
code: ``
+ },
+ {
+ filename: 'class-non-intersecting-conditions.vue',
+ code: ``
+ },
+ {
+ filename: 'class-multiple-logical-non-intersecting.vue',
+ code: ``
+ },
+ {
+ filename: 'class-binary-in-logical-non-intersecting.vue',
+ code: ``
}
],
invalid: [
@@ -66,7 +78,6 @@ tester.run('no-duplicate-class-names', rule, {
errors: [
{
message: "Duplicate class name 'foo'.",
- type: 'VLiteral',
line: 1,
column: 22,
endLine: 1,
@@ -81,7 +92,6 @@ tester.run('no-duplicate-class-names', rule, {
errors: [
{
message: "Duplicate class names 'foo', 'bar'.",
- type: 'VLiteral',
line: 1,
column: 22,
endLine: 1,
@@ -96,7 +106,6 @@ tester.run('no-duplicate-class-names', rule, {
errors: [
{
message: "Duplicate class name 'foo'.",
- type: 'Literal',
line: 1,
column: 24,
endLine: 1,
@@ -111,7 +120,6 @@ tester.run('no-duplicate-class-names', rule, {
errors: [
{
message: "Duplicate class name 'foo'.",
- type: 'TemplateElement',
line: 1,
column: 24,
endLine: 1,
@@ -126,7 +134,6 @@ tester.run('no-duplicate-class-names', rule, {
errors: [
{
message: "Duplicate class name 'foo'.",
- type: 'Literal',
line: 1,
column: 26,
endLine: 1,
@@ -141,7 +148,6 @@ tester.run('no-duplicate-class-names', rule, {
errors: [
{
message: "Duplicate class name 'foo'.",
- type: 'Literal',
line: 1,
column: 26,
endLine: 1,
@@ -149,7 +155,6 @@ tester.run('no-duplicate-class-names', rule, {
},
{
message: "Duplicate class name 'bar'.",
- type: 'Literal',
line: 1,
column: 47,
endLine: 1,
@@ -164,7 +169,6 @@ tester.run('no-duplicate-class-names', rule, {
errors: [
{
message: "Duplicate class name 'foo'.",
- type: 'Literal',
line: 1,
column: 25,
endLine: 1,
@@ -179,7 +183,6 @@ tester.run('no-duplicate-class-names', rule, {
errors: [
{
message: "Duplicate class name 'foo'.",
- type: 'Literal',
line: 1,
column: 25,
endLine: 1,
@@ -187,7 +190,6 @@ tester.run('no-duplicate-class-names', rule, {
},
{
message: "Duplicate class name 'bar'.",
- type: 'Literal',
line: 1,
column: 36,
endLine: 1,
@@ -202,7 +204,6 @@ tester.run('no-duplicate-class-names', rule, {
errors: [
{
message: "Duplicate class name 'foo'.",
- type: 'Literal',
line: 1,
column: 25,
endLine: 1,
@@ -210,7 +211,6 @@ tester.run('no-duplicate-class-names', rule, {
},
{
message: "Duplicate class name 'bar'.",
- type: 'Literal',
line: 1,
column: 38,
endLine: 1,
@@ -225,7 +225,6 @@ tester.run('no-duplicate-class-names', rule, {
errors: [
{
message: "Duplicate class name 'foo'.",
- type: 'Literal',
line: 1,
column: 35,
endLine: 1,
@@ -240,7 +239,6 @@ tester.run('no-duplicate-class-names', rule, {
errors: [
{
message: "Duplicate class name 'foo'.",
- type: 'Literal',
line: 1,
column: 24,
endLine: 1,
@@ -255,7 +253,6 @@ tester.run('no-duplicate-class-names', rule, {
errors: [
{
message: "Duplicate class name 'foo'.",
- type: 'VLiteral',
line: 1,
column: 22,
endLine: 1,
@@ -270,7 +267,6 @@ tester.run('no-duplicate-class-names', rule, {
errors: [
{
message: "Duplicate class name 'foo'.",
- type: 'VLiteral',
line: 1,
column: 22,
endLine: 1,
@@ -285,7 +281,6 @@ tester.run('no-duplicate-class-names', rule, {
errors: [
{
message: "Duplicate class name 'foo'.",
- type: 'VLiteral',
line: 1,
column: 22,
endLine: 1,
@@ -300,7 +295,6 @@ tester.run('no-duplicate-class-names', rule, {
errors: [
{
message: "Duplicate class name 'foo'.",
- type: 'VStartTag',
line: 1,
column: 11,
endLine: 1,
@@ -315,7 +309,6 @@ tester.run('no-duplicate-class-names', rule, {
errors: [
{
message: "Duplicate class name 'foo'.",
- type: 'VStartTag',
line: 1,
column: 11,
endLine: 1,
@@ -330,7 +323,6 @@ tester.run('no-duplicate-class-names', rule, {
errors: [
{
message: "Duplicate class name 'foo'.",
- type: 'VStartTag',
line: 1,
column: 11,
endLine: 1,
@@ -345,7 +337,6 @@ tester.run('no-duplicate-class-names', rule, {
errors: [
{
message: "Duplicate class names 'foo', 'bar'.",
- type: 'VStartTag',
line: 1,
column: 11,
endLine: 1,
@@ -360,7 +351,6 @@ tester.run('no-duplicate-class-names', rule, {
errors: [
{
message: "Duplicate class name 'foo'.",
- type: 'VStartTag',
line: 1,
column: 11,
endLine: 1,
@@ -375,7 +365,6 @@ tester.run('no-duplicate-class-names', rule, {
errors: [
{
message: "Duplicate class name 'foo'.",
- type: 'VStartTag',
line: 1,
column: 11,
endLine: 1,
@@ -390,7 +379,6 @@ tester.run('no-duplicate-class-names', rule, {
errors: [
{
message: "Duplicate class name 'foo'.",
- type: 'VStartTag',
line: 1,
column: 11,
endLine: 1,
@@ -405,7 +393,6 @@ tester.run('no-duplicate-class-names', rule, {
errors: [
{
message: "Duplicate class name 'foo'.",
- type: 'VStartTag',
line: 1,
column: 11,
endLine: 1,
@@ -420,7 +407,6 @@ tester.run('no-duplicate-class-names', rule, {
errors: [
{
message: "Duplicate class name 'foo'.",
- type: 'VStartTag',
line: 1,
column: 11,
endLine: 1,
@@ -435,7 +421,6 @@ tester.run('no-duplicate-class-names', rule, {
errors: [
{
message: "Duplicate class name 'foo'.",
- type: 'ArrayExpression',
line: 1,
column: 24,
endLine: 1,
@@ -450,7 +435,6 @@ tester.run('no-duplicate-class-names', rule, {
errors: [
{
message: "Duplicate class name 'foo'.",
- type: 'BinaryExpression',
line: 1,
column: 24,
endLine: 1,
@@ -465,7 +449,6 @@ tester.run('no-duplicate-class-names', rule, {
errors: [
{
message: "Duplicate class name 'foo'.",
- type: 'ArrayExpression',
line: 1,
column: 24,
endLine: 1,
@@ -480,7 +463,6 @@ tester.run('no-duplicate-class-names', rule, {
errors: [
{
message: "Duplicate class name 'foo'.",
- type: 'Literal',
line: 1,
column: 36,
endLine: 1,
@@ -495,7 +477,6 @@ tester.run('no-duplicate-class-names', rule, {
errors: [
{
message: "Duplicate class name 'foo'.",
- type: 'Literal',
line: 1,
column: 36,
endLine: 1,
@@ -510,7 +491,6 @@ tester.run('no-duplicate-class-names', rule, {
errors: [
{
message: "Duplicate class name 'foo'.",
- type: 'Literal',
line: 1,
column: 36,
endLine: 1,
@@ -525,7 +505,6 @@ tester.run('no-duplicate-class-names', rule, {
errors: [
{
message: "Duplicate class name 'foo'.",
- type: 'Literal',
line: 1,
column: 55,
endLine: 1,
@@ -540,7 +519,6 @@ tester.run('no-duplicate-class-names', rule, {
errors: [
{
message: "Duplicate class name 'bar'.",
- type: 'Literal',
line: 1,
column: 44,
endLine: 1,
@@ -555,13 +533,42 @@ tester.run('no-duplicate-class-names', rule, {
errors: [
{
message: "Duplicate class name 'foo'.",
- type: 'Literal',
line: 1,
column: 54,
endLine: 1,
endColumn: 63
}
]
+ },
+ {
+ filename: 'duplicate-class-binary-in-logical-expression.vue',
+ code: ``,
+ output: null,
+ errors: [
+ {
+ message: "Duplicate class name 'bar'.",
+ type: 'BinaryExpression',
+ line: 1,
+ column: 36,
+ endLine: 1,
+ endColumn: 50
+ }
+ ]
+ },
+ {
+ filename: 'duplicate-class-template-literal-in-logical-expression.vue',
+ code: '',
+ output: null,
+ errors: [
+ {
+ message: "Duplicate class name 'foo'.",
+ type: 'TemplateLiteral',
+ line: 1,
+ column: 36,
+ endLine: 1,
+ endColumn: 52
+ }
+ ]
}
]
})
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: `
-
- {{12345}}
- {{123.45}}
-
- `
- },
- {
- filename: 'test.vue',
- code: `
-
-
-
- `
- }
- ]
- : [])
+ {
+ filename: 'test.vue',
+ code: `
+
+ {{12345}}
+ {{123.45}}
+
+ `
+ },
+ {
+ filename: 'test.vue',
+ code: `
+
+
+
+ `
+ }
],
invalid: [
- ...(semver.gte(ESLint.version, '7.1.0')
- ? [
- {
- filename: 'test.vue',
- code: `
-
- {{12345678901234567890}}
- {{0.12345678901234567890}}
-
- `,
- 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: `
+
+ {{12345678901234567890}}
+ {{0.12345678901234567890}}
+
+ `,
+ 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-multi-spaces.js b/tests/lib/rules/no-multi-spaces.js
index 784718270..5f33a25e7 100644
--- a/tests/lib/rules/no-multi-spaces.js
+++ b/tests/lib/rules/no-multi-spaces.js
@@ -73,6 +73,38 @@ ruleTester.run('no-multi-spaces', rule, {
ignoreProperties: true
}
]
+ },
+ {
+ code: `
+
+
+
+ `,
+ options: [
+ {
+ ignoreEOLComments: true
+ }
+ ]
+ },
+ {
+ code: `
+
+
+
+ `,
+ options: [
+ {
+ ignoreEOLComments: true
+ }
+ ]
}
],
invalid: [
@@ -82,7 +114,6 @@ ruleTester.run('no-multi-spaces', rule, {
errors: [
{
message: "Multiple spaces found before '/>'.",
- type: 'HTMLSelfClosingTagClose',
line: 1,
column: 15,
endLine: 1,
@@ -96,7 +127,6 @@ ruleTester.run('no-multi-spaces', rule, {
errors: [
{
message: "Multiple spaces found before 'class'.",
- type: 'HTMLIdentifier',
line: 1,
column: 15,
endLine: 1,
@@ -104,7 +134,6 @@ ruleTester.run('no-multi-spaces', rule, {
},
{
message: "Multiple spaces found before '/>'.",
- type: 'HTMLSelfClosingTagClose',
line: 1,
column: 29,
endLine: 1,
@@ -118,7 +147,6 @@ ruleTester.run('no-multi-spaces', rule, {
errors: [
{
message: "Multiple spaces found before 'class'.",
- type: 'HTMLIdentifier',
line: 1,
column: 15,
endLine: 1,
@@ -126,7 +154,6 @@ ruleTester.run('no-multi-spaces', rule, {
},
{
message: "Multiple spaces found before '/>'.",
- type: 'HTMLSelfClosingTagClose',
line: 1,
column: 28,
endLine: 1,
@@ -140,7 +167,6 @@ ruleTester.run('no-multi-spaces', rule, {
errors: [
{
message: "Multiple spaces found before ':'.",
- type: 'Punctuator',
line: 1,
column: 15,
endLine: 1,
@@ -148,7 +174,6 @@ ruleTester.run('no-multi-spaces', rule, {
},
{
message: "Multiple spaces found before '/>'.",
- type: 'HTMLSelfClosingTagClose',
line: 1,
column: 30,
endLine: 1,
@@ -162,7 +187,6 @@ ruleTester.run('no-multi-spaces', rule, {
errors: [
{
message: "Multiple spaces found before '/>'.",
- type: 'HTMLSelfClosingTagClose',
line: 1,
column: 35,
endLine: 1,
@@ -176,7 +200,6 @@ ruleTester.run('no-multi-spaces', rule, {
errors: [
{
message: "Multiple spaces found before '/>'.",
- type: 'HTMLSelfClosingTagClose',
line: 1,
column: 34,
endLine: 1,
@@ -190,7 +213,6 @@ ruleTester.run('no-multi-spaces', rule, {
errors: [
{
message: "Multiple spaces found before '/>'.",
- type: 'HTMLSelfClosingTagClose',
line: 1,
column: 36,
endLine: 1,
@@ -204,7 +226,6 @@ ruleTester.run('no-multi-spaces', rule, {
errors: [
{
message: "Multiple spaces found before '/>'.",
- type: 'HTMLSelfClosingTagClose',
line: 2,
column: 21,
endLine: 2,
@@ -218,7 +239,6 @@ ruleTester.run('no-multi-spaces', rule, {
errors: [
{
message: "Multiple spaces found before 'test'.",
- type: 'Identifier',
line: 1,
column: 18,
endLine: 1,
@@ -226,7 +246,6 @@ ruleTester.run('no-multi-spaces', rule, {
},
{
message: "Multiple spaces found before '}}'.",
- type: 'VExpressionEnd',
line: 1,
column: 24,
endLine: 1,
@@ -240,7 +259,6 @@ ruleTester.run('no-multi-spaces', rule, {
errors: [
{
message: "Multiple spaces found before '>'.",
- type: 'HTMLTagClose',
line: 1,
column: 15,
endLine: 1,
@@ -254,7 +272,6 @@ ruleTester.run('no-multi-spaces', rule, {
errors: [
{
message: "Multiple spaces found before 'i'.",
- type: 'Identifier',
line: 1,
column: 23,
endLine: 1,
@@ -262,7 +279,6 @@ ruleTester.run('no-multi-spaces', rule, {
},
{
message: "Multiple spaces found before 'in'.",
- type: 'Keyword',
line: 1,
column: 30,
endLine: 1,
@@ -270,7 +286,6 @@ ruleTester.run('no-multi-spaces', rule, {
},
{
message: "Multiple spaces found before 'b'.",
- type: 'Identifier',
line: 1,
column: 36,
endLine: 1,
@@ -278,7 +293,6 @@ ruleTester.run('no-multi-spaces', rule, {
},
{
message: "Multiple spaces found before '\"'.",
- type: 'Punctuator',
line: 1,
column: 41,
endLine: 1,
@@ -310,7 +324,6 @@ ruleTester.run('no-multi-spaces', rule, {
errors: [
{
message: "Multiple spaces found before ':'.",
- type: 'Punctuator',
line: 5,
column: 26,
endLine: 5,
@@ -342,13 +355,138 @@ ruleTester.run('no-multi-spaces', rule, {
errors: [
{
message: "Multiple spaces found before 'isExpanded'.",
- type: 'Identifier',
line: 5,
column: 27,
endLine: 5,
endColumn: 30
}
]
+ },
+ {
+ code: `
+
+
+
+ `,
+ output: `
+
+
+
+ `,
+ errors: [
+ {
+ message: "Multiple spaces found before '// comment'.",
+ line: 5,
+ column: 23,
+ endLine: 5,
+ endColumn: 25
+ }
+ ]
+ },
+ {
+ code: `
+
+
+
+ `,
+ output: `
+
+
+
+ `,
+ errors: [
+ {
+ message: "Multiple spaces found before '/* multiline comment */'.",
+ line: 5,
+ column: 23,
+ endLine: 5,
+ endColumn: 25
+ }
+ ]
+ },
+ {
+ code: `
+
+
+
+ `,
+ output: `
+
+
+
+ `,
+ options: [
+ {
+ ignoreEOLComments: false
+ }
+ ],
+ errors: [
+ {
+ message: "Multiple spaces found before '// comment'.",
+ line: 5,
+ column: 23,
+ endLine: 5,
+ endColumn: 25
+ }
+ ]
+ },
+ {
+ code: `
+
+
+
+ `,
+ output: `
+
+
+
+ `,
+ options: [
+ {
+ ignoreEOLComments: false
+ }
+ ],
+ errors: [
+ {
+ message: "Multiple spaces found before '/* multiline comment */'.",
+ line: 5,
+ column: 23,
+ endLine: 5,
+ endColumn: 25
+ }
+ ]
}
]
})
diff --git a/tests/lib/rules/no-multiple-objects-in-class.js b/tests/lib/rules/no-multiple-objects-in-class.js
index ab019f020..46805fb14 100644
--- a/tests/lib/rules/no-multiple-objects-in-class.js
+++ b/tests/lib/rules/no-multiple-objects-in-class.js
@@ -26,7 +26,6 @@ ruleTester.run('no-multiple-objects-in-class', rule, {
errors: [
{
message: 'Unexpected multiple objects. Merge objects.',
- type: 'VAttribute',
line: 1,
column: 16,
endLine: 1,
@@ -39,7 +38,6 @@ ruleTester.run('no-multiple-objects-in-class', rule, {
errors: [
{
message: 'Unexpected multiple objects. Merge objects.',
- type: 'VAttribute',
line: 1,
column: 16,
endLine: 1,
@@ -54,7 +52,6 @@ ruleTester.run('no-multiple-objects-in-class', rule, {
errors: [
{
message: 'Unexpected multiple objects. Merge objects.',
- type: 'VAttribute',
line: 1,
column: 16,
endLine: 1,
diff --git a/tests/lib/rules/no-negated-v-if-condition.js b/tests/lib/rules/no-negated-v-if-condition.js
index fc0e02d0d..0b97c7909 100644
--- a/tests/lib/rules/no-negated-v-if-condition.js
+++ b/tests/lib/rules/no-negated-v-if-condition.js
@@ -153,24 +153,19 @@ tester.run('no-negated-v-if-condition', rule, {
Alternative
`,
+ output: `
+
+ Alternative
+ Content
+
+ `,
errors: [
{
messageId: 'negatedCondition',
line: 3,
column: 20,
endLine: 3,
- endColumn: 24,
- suggestions: [
- {
- messageId: 'fixNegatedCondition',
- output: `
-
- Alternative
- Content
-
- `
- }
- ]
+ endColumn: 24
}
]
},
@@ -182,24 +177,19 @@ tester.run('no-negated-v-if-condition', rule, {
Otherwise
`,
+ output: `
+
+ Otherwise
+ Negated condition
+
+ `,
errors: [
{
messageId: 'negatedCondition',
line: 3,
column: 20,
endLine: 3,
- endColumn: 33,
- suggestions: [
- {
- messageId: 'fixNegatedCondition',
- output: `
-
- Otherwise
- Negated condition
-
- `
- }
- ]
+ endColumn: 33
}
]
},
@@ -211,24 +201,19 @@ tester.run('no-negated-v-if-condition', rule, {
Equal
`,
+ output: `
+
+ Equal
+ Not equal
+
+ `,
errors: [
{
messageId: 'negatedCondition',
line: 3,
column: 20,
endLine: 3,
- endColumn: 26,
- suggestions: [
- {
- messageId: 'fixNegatedCondition',
- output: `
-
- Equal
- Not equal
-
- `
- }
- ]
+ endColumn: 26
}
]
},
@@ -240,24 +225,19 @@ tester.run('no-negated-v-if-condition', rule, {
Strictly equal
`,
+ output: `
+
+ Strictly equal
+ Strictly not equal
+
+ `,
errors: [
{
messageId: 'negatedCondition',
line: 3,
column: 20,
endLine: 3,
- endColumn: 27,
- suggestions: [
- {
- messageId: 'fixNegatedCondition',
- output: `
-
- Strictly equal
- Strictly not equal
-
- `
- }
- ]
+ endColumn: 27
}
]
},
@@ -270,25 +250,20 @@ tester.run('no-negated-v-if-condition', rule, {
Default
`,
+ output: `
+
+ First
+ Default
+ Second
+
+ `,
errors: [
{
messageId: 'negatedCondition',
line: 4,
column: 26,
endLine: 4,
- endColumn: 30,
- suggestions: [
- {
- messageId: 'fixNegatedCondition',
- output: `
-
- First
- Default
- Second
-
- `
- }
- ]
+ endColumn: 30
}
]
},
@@ -301,25 +276,20 @@ tester.run('no-negated-v-if-condition', rule, {
Default
`,
+ output: `
+
+ First
+ Default
+ Second
+
+ `,
errors: [
{
messageId: 'negatedCondition',
line: 4,
column: 26,
endLine: 4,
- endColumn: 28,
- suggestions: [
- {
- messageId: 'fixNegatedCondition',
- output: `
-
- First
- Default
- Second
-
- `
- }
- ]
+ endColumn: 28
}
]
},
@@ -331,24 +301,19 @@ tester.run('no-negated-v-if-condition', rule, {
span contents
`,
+ output: `
+
+ span contents
+ div contents
+
+ `,
errors: [
{
messageId: 'negatedCondition',
line: 3,
column: 20,
endLine: 3,
- endColumn: 30,
- suggestions: [
- {
- messageId: 'fixNegatedCondition',
- output: `
-
- span contents
- div contents
-
- `
- }
- ]
+ endColumn: 30
}
]
},
@@ -366,17 +331,7 @@ tester.run('no-negated-v-if-condition', rule, {
`,
- errors: [
- {
- messageId: 'negatedCondition',
- line: 3,
- column: 20,
- endLine: 3,
- endColumn: 26,
- suggestions: [
- {
- messageId: 'fixNegatedCondition',
- output: `
+ output: `
Nested if content
@@ -387,57 +342,28 @@ tester.run('no-negated-v-if-condition', rule, {
Inner else content
- `
- }
- ]
+ `,
+ errors: [
+ {
+ messageId: 'negatedCondition',
+ line: 3,
+ column: 20,
+ endLine: 3,
+ endColumn: 26
},
{
messageId: 'negatedCondition',
line: 4,
column: 23,
endLine: 4,
- endColumn: 29,
- suggestions: [
- {
- messageId: 'fixNegatedCondition',
- output: `
-
-
-
Inner else content
-
Inner if content
-
-
- Nested if content
- Nested else content
-
-
- `
- }
- ]
+ endColumn: 29
},
{
messageId: 'negatedCondition',
line: 8,
column: 23,
endLine: 8,
- endColumn: 30,
- suggestions: [
- {
- messageId: 'fixNegatedCondition',
- output: `
-
-
-
Inner if content
-
Inner else content
-
-
- Nested else content
- Nested if content
-
-
- `
- }
- ]
+ endColumn: 30
}
]
}
diff --git a/tests/lib/rules/no-parsing-error.js b/tests/lib/rules/no-parsing-error.js
index 54194a7b5..9225e4bda 100644
--- a/tests/lib/rules/no-parsing-error.js
+++ b/tests/lib/rules/no-parsing-error.js
@@ -80,13 +80,11 @@ tester.run('no-parsing-error', rule, {
},
{
code: '