Skip to content

Commit 0cad3ac

Browse files
authored
Chore: add test for eslint v9 (#694)
1 parent ac040c1 commit 0cad3ac

File tree

93 files changed

+537
-436
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

93 files changed

+537
-436
lines changed

.github/workflows/NodeCI.yml

Lines changed: 11 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -12,8 +12,6 @@ jobs:
1212
steps:
1313
- uses: actions/checkout@v4
1414
- uses: actions/setup-node@v4
15-
with:
16-
node-version: 18
1715
- name: Install Packages
1816
run: npm ci
1917
- name: Build
@@ -24,15 +22,21 @@ jobs:
2422
runs-on: ubuntu-latest
2523
strategy:
2624
matrix:
27-
node-version: [18.x, 20.x]
25+
node: [18.x, 20.x]
26+
eslint: [8, ^9.0.0-0]
2827
steps:
2928
- uses: actions/checkout@v4
30-
- name: Use Node.js ${{ matrix.node-version }}
29+
- name: Use Node.js ${{ matrix.node }}
3130
uses: actions/setup-node@v4
3231
with:
33-
node-version: ${{ matrix.node-version }}
32+
node-version: ${{ matrix.node }}
33+
- name: Install ESLint ${{ matrix.eslint }}
34+
# We use --legacy-peer-deps because we get a lot of dependency warnings when installing eslint v9-alpha.
35+
run: npm i -D eslint@${{ matrix.eslint }} --legacy-peer-deps
3436
- name: Install Packages
35-
run: npm ci
37+
# run: npm ci
38+
# We use `npm i` because there is an error regarding dependencies when installing eslint v9-alpha.
39+
run: npm i -f
3640
- name: Test
3741
run: npm test
3842
test-and-coverage:
@@ -45,16 +49,14 @@ jobs:
4549
- name: Test
4650
run: npm run test:nyc
4751
- name: Coveralls GitHub Action
48-
uses: coverallsapp/github-action@3dfc5567390f6fa9267c0ee9c251e4c8c3f18949 # v2.2.3
52+
uses: coverallsapp/github-action@v2
4953
with:
5054
github-token: ${{ secrets.GITHUB_TOKEN }}
5155
update:
5256
runs-on: ubuntu-latest
5357
steps:
5458
- uses: actions/checkout@v4
5559
- uses: actions/setup-node@v4
56-
with:
57-
node-version: 18
5860
- name: Install Packages
5961
run: npm ci
6062
- name: Build

package-lock.json

Lines changed: 10 additions & 9 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

package.json

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -79,7 +79,7 @@
7979
"eslint-config-prettier": "^9.0.0",
8080
"eslint-doc-generator": "^1.4.1",
8181
"eslint-plugin-eslint-comments": "^3.2.0",
82-
"eslint-plugin-eslint-plugin": "^5.0.0",
82+
"eslint-plugin-eslint-plugin": "^5.2.1",
8383
"eslint-plugin-json-schema-validator": "^4.6.1",
8484
"eslint-plugin-jsonc": "^2.0.0",
8585
"eslint-plugin-n": "^16.0.0",
@@ -95,6 +95,7 @@
9595
"nyc": "^15.1.0",
9696
"pako": "^2.1.0",
9797
"prettier": "~3.2.0",
98+
"semver": "^7.5.4",
9899
"stylelint": "^16.0.0",
99100
"stylelint-config-standard-vue": "^1.0.0",
100101
"ts-node": "^10.2.1",

tests/lib/eslint-plugin.ts

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,7 @@ import path from "path"
22
import assert from "assert"
33
import { ESLint } from "eslint"
44
import * as plugin from "../../lib/index"
5+
import semver from "semver"
56

67
// -----------------------------------------------------------------------------
78
// Tests
@@ -10,6 +11,10 @@ import * as plugin from "../../lib/index"
1011
const TEST_CWD = path.join(__dirname, "../fixtures/integrations/eslint-plugin")
1112

1213
describe("Integration with eslint-plugin-regexp", () => {
14+
if (semver.gte(ESLint.version, "9.0.0-0")) {
15+
// TODO: We don't support flat-config yet so we can't test it.
16+
return
17+
}
1318
it("should lint without errors", async () => {
1419
let results: ESLint.LintResult[]
1520
if (ESLint) {

tests/lib/rule-tester.ts

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,12 @@
1+
import { RuleTester as OriginalRuleTester } from "eslint"
2+
3+
export const RuleTester = getUnsupportedFlatRuleTester() || OriginalRuleTester
4+
5+
function getUnsupportedFlatRuleTester() {
6+
try {
7+
// eslint-disable-next-line @typescript-eslint/no-require-imports, @typescript-eslint/no-var-requires -- for test
8+
return require("eslint/use-at-your-own-risk").FlatRuleTester
9+
} catch {
10+
return null
11+
}
12+
}

tests/lib/rules-with-unknown-flag.ts

Lines changed: 10 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -60,17 +60,23 @@ describe("Don't crash even if with unknown flag.", () => {
6060
}
6161

6262
const pluginRules = Object.fromEntries(
63-
Object.values(rules).map((rule) => [rule.meta.docs.ruleId, rule]),
63+
Object.values(rules).map((rule) => [rule.meta.docs.ruleName, rule]),
6464
)
6565

6666
for (const rule of Object.values(rules)) {
6767
const ruleId = rule.meta.docs.ruleId
6868

6969
it(ruleId, () => {
70-
const linter = new Linter()
70+
const linter = new Linter({ configType: "flat" })
7171
const config: Linter.Config = {
72-
parser: "@typescript-eslint/parser",
73-
parserOptions: {
72+
plugins: {
73+
// @ts-expect-error -- ignore type error for eslint v9
74+
regexp: {
75+
rules: { ...pluginRules, test: TEST_RULE },
76+
},
77+
},
78+
languageOptions: {
79+
parser,
7480
ecmaVersion: 2020,
7581
},
7682
rules: {
@@ -81,11 +87,7 @@ describe("Don't crash even if with unknown flag.", () => {
8187
: {}),
8288
},
8389
}
84-
// @ts-expect-error -- ignore
85-
linter.defineParser("@typescript-eslint/parser", parser)
86-
linter.defineRules(pluginRules)
8790

88-
linter.defineRule("regexp/test", TEST_RULE)
8991
const resultVue = linter.verifyAndFix(code, config, "test.js")
9092

9193
assert.deepStrictEqual(

tests/lib/rules/confusing-quantifier.ts

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,8 @@
1-
import { RuleTester } from "eslint"
1+
import { RuleTester } from "../rule-tester"
22
import rule from "../../../lib/rules/confusing-quantifier"
33

44
const tester = new RuleTester({
5-
parserOptions: {
5+
languageOptions: {
66
ecmaVersion: "latest",
77
sourceType: "module",
88
},

tests/lib/rules/control-character-escape.ts

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,8 @@
1-
import { RuleTester } from "eslint"
1+
import { RuleTester } from "../rule-tester"
22
import rule from "../../../lib/rules/control-character-escape"
33

44
const tester = new RuleTester({
5-
parserOptions: {
5+
languageOptions: {
66
ecmaVersion: "latest",
77
sourceType: "module",
88
},

tests/lib/rules/grapheme-string-literal.ts

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,8 @@
1-
import { RuleTester } from "eslint"
1+
import { RuleTester } from "../rule-tester"
22
import rule from "../../../lib/rules/grapheme-string-literal"
33

44
const tester = new RuleTester({
5-
parserOptions: {
5+
languageOptions: {
66
ecmaVersion: "latest",
77
sourceType: "module",
88
},

tests/lib/rules/hexadecimal-escape.ts

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,8 @@
1-
import { RuleTester } from "eslint"
1+
import { RuleTester } from "../rule-tester"
22
import rule from "../../../lib/rules/hexadecimal-escape"
33

44
const tester = new RuleTester({
5-
parserOptions: {
5+
languageOptions: {
66
ecmaVersion: "latest",
77
sourceType: "module",
88
},

0 commit comments

Comments
 (0)