Skip to content

Commit b525a83

Browse files
authored
Fix test cases (#118)
1 parent 1f1aa8a commit b525a83

File tree

3 files changed

+57
-5
lines changed

3 files changed

+57
-5
lines changed

package.json

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -54,6 +54,7 @@
5454
"@types/eslint-visitor-keys": "^1.0.0",
5555
"@types/mocha": "^9.0.0",
5656
"@types/node": "^16.0.0",
57+
"@types/semver": "^7.3.9",
5758
"@typescript-eslint/eslint-plugin": "^5.4.0",
5859
"@typescript-eslint/parser": "^5.4.0",
5960
"code-red": "^0.2.3",
@@ -75,6 +76,7 @@
7576
"nyc": "^15.1.0",
7677
"prettier": "^2.0.5",
7778
"prettier-plugin-svelte": "^2.5.0",
79+
"semver": "^7.3.5",
7880
"string-replace-loader": "^3.0.3",
7981
"svelte": "^3.44.1",
8082
"ts-node": "^10.4.0",

tests/src/parser/parser.ts

Lines changed: 42 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,7 @@
1+
/* global require -- node */
12
import assert from "assert"
23
import fs from "fs"
4+
import semver from "semver"
35

46
import { traverseNodes } from "../../../src/traverse"
57
import { parseForESLint } from "../../../src"
@@ -24,6 +26,7 @@ describe("Check for AST.", () => {
2426
inputFileName,
2527
outputFileName,
2628
scopeFileName,
29+
requirements,
2730
} of listupFixtures()) {
2831
describe(inputFileName, () => {
2932
let result: any
@@ -34,11 +37,26 @@ describe("Check for AST.", () => {
3437
const output = fs.readFileSync(outputFileName, "utf8")
3538
assert.strictEqual(astJson, output)
3639
})
37-
it("most to generate the expected scope.", () => {
38-
const json = scopeToJSON(result.scopeManager)
39-
const output = fs.readFileSync(scopeFileName, "utf8")
40-
assert.strictEqual(json, output)
41-
})
40+
if (canTest(requirements, "scope"))
41+
it("most to generate the expected scope.", () => {
42+
let json: any = scopeToJSON(result.scopeManager)
43+
let output: any = fs.readFileSync(scopeFileName, "utf8")
44+
45+
if (
46+
result.services?.program // use ts parser
47+
) {
48+
// eslint-disable-next-line @typescript-eslint/no-require-imports, @typescript-eslint/no-var-requires -- ignore
49+
const pkg = require("@typescript-eslint/parser/package.json")
50+
if (!semver.satisfies(pkg.version, "^5.6.0")) {
51+
// adjust global scope
52+
json = JSON.parse(json)
53+
output = JSON.parse(output)
54+
json.variables = output.variables
55+
}
56+
}
57+
58+
assert.deepStrictEqual(json, output)
59+
})
4260

4361
it("location must be correct.", () => {
4462
// check tokens
@@ -58,6 +76,25 @@ describe("Check for AST.", () => {
5876
}
5977
})
6078

79+
function canTest(
80+
requirements: { scope?: Record<string, string> },
81+
key: "scope",
82+
) {
83+
const obj = requirements[key]
84+
if (obj) {
85+
if (
86+
Object.entries(obj).some(([pkgName, pkgVersion]) => {
87+
// eslint-disable-next-line @typescript-eslint/no-require-imports, @typescript-eslint/no-var-requires -- ignore
88+
const pkg = require(`${pkgName}/package.json`)
89+
return !semver.satisfies(pkg.version, pkgVersion)
90+
})
91+
) {
92+
return false
93+
}
94+
}
95+
return true
96+
}
97+
6198
function checkTokens(ast: SvelteProgram, input: string) {
6299
const allTokens = [...ast.tokens, ...ast.comments].sort(
63100
(a, b) => a.range[0] - b.range[0],

tests/src/parser/test-utils.ts

Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -22,6 +22,9 @@ export function* listupFixtures(): IterableIterator<{
2222
outputFileName: string
2323
scopeFileName: string
2424
typeFileName: string | null
25+
requirements: {
26+
scope?: Record<string, string>
27+
}
2528
getRuleOutputFileName: (ruleName: string) => string
2629
}> {
2730
yield* listupFixturesImpl(AST_FIXTURE_ROOT)
@@ -33,6 +36,9 @@ function* listupFixturesImpl(dir: string): IterableIterator<{
3336
outputFileName: string
3437
scopeFileName: string
3538
typeFileName: string | null
39+
requirements: {
40+
scope?: Record<string, string>
41+
}
3642
getRuleOutputFileName: (ruleName: string) => string
3743
}> {
3844
for (const filename of fs.readdirSync(dir)) {
@@ -50,6 +56,10 @@ function* listupFixturesImpl(dir: string): IterableIterator<{
5056
/input\.svelte$/u,
5157
"type-output.svelte",
5258
)
59+
const requirementsFileName = inputFileName.replace(
60+
/input\.svelte$/u,
61+
"requirements.json",
62+
)
5363

5464
const input = fs.readFileSync(inputFileName, "utf8")
5565
yield {
@@ -58,6 +68,9 @@ function* listupFixturesImpl(dir: string): IterableIterator<{
5868
outputFileName,
5969
scopeFileName,
6070
typeFileName: fs.existsSync(typeFileName) ? typeFileName : null,
71+
requirements: fs.existsSync(requirementsFileName)
72+
? JSON.parse(fs.readFileSync(requirementsFileName, "utf-8"))
73+
: {},
6174
getRuleOutputFileName: (ruleName) => {
6275
return inputFileName.replace(
6376
/input\.svelte$/u,

0 commit comments

Comments
 (0)