Skip to content

Commit 50d2e62

Browse files
authored
Fix false positives for files other than *.svelte in svelte/no-unused-svelte-ignore rule (#202)
* Fix false positives for js in `svelte/no-unused-svelte-ignore` rule * fix
1 parent f054b52 commit 50d2e62

File tree

3 files changed

+20
-19
lines changed

3 files changed

+20
-19
lines changed

src/rules/no-unused-svelte-ignore.ts

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -19,6 +19,9 @@ export default createRule("no-unused-svelte-ignore", {
1919
},
2020

2121
create(context) {
22+
if (!context.parserServices.isSvelte) {
23+
return {}
24+
}
2225
const sourceCode = context.getSourceCode()
2326

2427
const ignoreComments: IgnoreItem[] = []
Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,4 @@
1+
// <!-- svelte-ignore a11y-autofocus a11y-missing-attribute -->
2+
// <img src="foo" alt="Foo" />
3+
/* svelte-ignore a11y-autofocus a11y-missing-attribute */
4+
// <img src="foo" />

tests/utils/utils.ts

Lines changed: 13 additions & 19 deletions
Original file line numberDiff line numberDiff line change
@@ -61,7 +61,7 @@ export function loadTestCases(
6161
valid?: (RuleTester.ValidTestCase | string)[]
6262
invalid?: RuleTester.InvalidTestCase[]
6363
}
64-
filter: (file: string) => boolean
64+
filter?: (file: string) => boolean
6565
},
6666
): {
6767
valid: RuleTester.ValidTestCase[]
@@ -88,8 +88,8 @@ export function loadTestCases(
8888
.filter(filter)
8989
.map((inputFile) => {
9090
const config = getConfig(ruleName, inputFile)
91-
const errorFile = inputFile.replace(/input\.svelte$/u, "errors.json")
92-
const outputFile = inputFile.replace(/input\.svelte$/u, "output.svelte")
91+
const errorFile = inputFile.replace(/input\.[a-z]+$/u, "errors.json")
92+
const outputFile = inputFile.replace(/input\.[a-z]+$/u, "output.svelte")
9393
let errors
9494
try {
9595
errors = fs.readFileSync(errorFile, "utf8")
@@ -147,7 +147,7 @@ function* itrListupInput(rootDir: string): IterableIterator<string> {
147147
continue
148148
}
149149
const abs = path.join(rootDir, filename)
150-
if (filename.endsWith("input.svelte")) {
150+
if (path.basename(filename, path.extname(filename)).endsWith("input")) {
151151
yield abs
152152
} else if (fs.statSync(abs).isDirectory()) {
153153
yield* itrListupInput(abs)
@@ -161,8 +161,8 @@ function writeFixtures(
161161
{ force }: { force?: boolean } = {},
162162
) {
163163
const linter = getLinter(ruleName)
164-
const errorFile = inputFile.replace(/input\.svelte$/u, "errors.json")
165-
const outputFile = inputFile.replace(/input\.svelte$/u, "output.svelte")
164+
const errorFile = inputFile.replace(/input\.[a-z]+$/u, "errors.json")
165+
const outputFile = inputFile.replace(/input\.[a-z]+$/u, "output.svelte")
166166

167167
const config = getConfig(ruleName, inputFile)
168168

@@ -222,23 +222,17 @@ function getConfig(ruleName: string, inputFile: string) {
222222
const filename = inputFile.slice(inputFile.indexOf(ruleName))
223223
const code = fs.readFileSync(inputFile, "utf8")
224224
let config
225-
let configFile: string = inputFile.replace(/input\.svelte$/u, "config.json")
225+
let configFile: string = inputFile.replace(/input\.[a-z]+$/u, "config.json")
226226
if (!fs.existsSync(configFile)) {
227227
configFile = path.join(path.dirname(inputFile), "_config.json")
228228
}
229229
if (fs.existsSync(configFile)) {
230230
config = JSON.parse(fs.readFileSync(configFile, "utf8"))
231231
}
232-
if (config && typeof config === "object") {
233-
return Object.assign(
234-
{ parser: require.resolve("svelte-eslint-parser") },
235-
config,
236-
{ code, filename },
237-
)
238-
}
239-
// default
240-
return Object.assign(
241-
{ parser: require.resolve("svelte-eslint-parser") },
242-
{ code, filename },
243-
)
232+
const parser =
233+
path.extname(filename) === ".svelte"
234+
? require.resolve("svelte-eslint-parser")
235+
: undefined
236+
237+
return Object.assign({ parser }, config, { code, filename })
244238
}

0 commit comments

Comments
 (0)