From 07a5a39f443bbe1aee6d5d850a4a19d67229e835 Mon Sep 17 00:00:00 2001 From: yosuke ota Date: Fri, 29 Jul 2022 11:10:22 +0900 Subject: [PATCH 1/2] Fix false positives for js in `svelte/no-unused-svelte-ignore` rule --- src/rules/no-unused-svelte-ignore.ts | 3 ++ .../valid/ignore-js-input.js | 4 +++ tests/utils/utils.ts | 29 +++++++++---------- 3 files changed, 20 insertions(+), 16 deletions(-) create mode 100644 tests/fixtures/rules/no-unused-svelte-ignore/valid/ignore-js-input.js diff --git a/src/rules/no-unused-svelte-ignore.ts b/src/rules/no-unused-svelte-ignore.ts index 65e5d2bd8..2d8c66e76 100644 --- a/src/rules/no-unused-svelte-ignore.ts +++ b/src/rules/no-unused-svelte-ignore.ts @@ -19,6 +19,9 @@ export default createRule("no-unused-svelte-ignore", { }, create(context) { + if (!context.parserServices.isSvelte) { + return {} + } const sourceCode = context.getSourceCode() const ignoreComments: IgnoreItem[] = [] diff --git a/tests/fixtures/rules/no-unused-svelte-ignore/valid/ignore-js-input.js b/tests/fixtures/rules/no-unused-svelte-ignore/valid/ignore-js-input.js new file mode 100644 index 000000000..ae6e57070 --- /dev/null +++ b/tests/fixtures/rules/no-unused-svelte-ignore/valid/ignore-js-input.js @@ -0,0 +1,4 @@ +// +// Foo +/* svelte-ignore a11y-autofocus a11y-missing-attribute */ +// diff --git a/tests/utils/utils.ts b/tests/utils/utils.ts index ebdf9173e..470b66bbc 100644 --- a/tests/utils/utils.ts +++ b/tests/utils/utils.ts @@ -61,7 +61,7 @@ export function loadTestCases( valid?: (RuleTester.ValidTestCase | string)[] invalid?: RuleTester.InvalidTestCase[] } - filter: (file: string) => boolean + filter?: (file: string) => boolean }, ): { valid: RuleTester.ValidTestCase[] @@ -88,8 +88,8 @@ export function loadTestCases( .filter(filter) .map((inputFile) => { const config = getConfig(ruleName, inputFile) - const errorFile = inputFile.replace(/input\.svelte$/u, "errors.json") - const outputFile = inputFile.replace(/input\.svelte$/u, "output.svelte") + const errorFile = inputFile.replace(/input\.[a-z]+$/u, "errors.json") + const outputFile = inputFile.replace(/input\.[a-z]+$/u, "output.svelte") let errors try { errors = fs.readFileSync(errorFile, "utf8") @@ -147,7 +147,7 @@ function* itrListupInput(rootDir: string): IterableIterator { continue } const abs = path.join(rootDir, filename) - if (filename.endsWith("input.svelte")) { + if (path.basename(filename, path.extname(filename)).endsWith("input")) { yield abs } else if (fs.statSync(abs).isDirectory()) { yield* itrListupInput(abs) @@ -161,8 +161,8 @@ function writeFixtures( { force }: { force?: boolean } = {}, ) { const linter = getLinter(ruleName) - const errorFile = inputFile.replace(/input\.svelte$/u, "errors.json") - const outputFile = inputFile.replace(/input\.svelte$/u, "output.svelte") + const errorFile = inputFile.replace(/input\.[a-z]+$/u, "errors.json") + const outputFile = inputFile.replace(/input\.[a-z]+$/u, "output.svelte") const config = getConfig(ruleName, inputFile) @@ -222,23 +222,20 @@ function getConfig(ruleName: string, inputFile: string) { const filename = inputFile.slice(inputFile.indexOf(ruleName)) const code = fs.readFileSync(inputFile, "utf8") let config - let configFile: string = inputFile.replace(/input\.svelte$/u, "config.json") + let configFile: string = inputFile.replace(/input\.[a-z]+$/u, "config.json") if (!fs.existsSync(configFile)) { configFile = path.join(path.dirname(inputFile), "_config.json") } if (fs.existsSync(configFile)) { config = JSON.parse(fs.readFileSync(configFile, "utf8")) } + const parser = + path.extname(filename) === ".svelte" + ? require.resolve("svelte-eslint-parser") + : undefined if (config && typeof config === "object") { - return Object.assign( - { parser: require.resolve("svelte-eslint-parser") }, - config, - { code, filename }, - ) + return Object.assign({ parser }, config, { code, filename }) } // default - return Object.assign( - { parser: require.resolve("svelte-eslint-parser") }, - { code, filename }, - ) + return Object.assign({ parser }, { code, filename }) } From 3623df639e36edac463724522e62832f7b0f98d1 Mon Sep 17 00:00:00 2001 From: yosuke ota Date: Fri, 29 Jul 2022 11:20:34 +0900 Subject: [PATCH 2/2] fix --- tests/utils/utils.ts | 7 ++----- 1 file changed, 2 insertions(+), 5 deletions(-) diff --git a/tests/utils/utils.ts b/tests/utils/utils.ts index 470b66bbc..56b70694d 100644 --- a/tests/utils/utils.ts +++ b/tests/utils/utils.ts @@ -233,9 +233,6 @@ function getConfig(ruleName: string, inputFile: string) { path.extname(filename) === ".svelte" ? require.resolve("svelte-eslint-parser") : undefined - if (config && typeof config === "object") { - return Object.assign({ parser }, config, { code, filename }) - } - // default - return Object.assign({ parser }, { code, filename }) + + return Object.assign({ parser }, config, { code, filename }) }