Skip to content

Commit cfe711a

Browse files
committed
test: use flat compat rule tester
1 parent 0aefdbf commit cfe711a

10 files changed

+68
-9
lines changed

package.json

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -52,6 +52,7 @@
5252
"eslint-remote-tester": "^3.0.0",
5353
"eslint-remote-tester-repositories": "^1.0.1",
5454
"kcd-scripts": "^12.0.0",
55+
"semver": "^7.6.0",
5556
"typescript": "^5.1.3"
5657
},
5758
"peerDependencies": {

src/__tests__/lib/rules/prefer-empty.js

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -8,8 +8,8 @@
88
// Requirements
99
//------------------------------------------------------------------------------
1010

11-
import { RuleTester } from "eslint";
12-
import * as rule from "../../../rules/prefer-empty";
11+
import { FlatCompatRuleTester as RuleTester } from '../../rule-tester';
12+
import * as rule from '../../../rules/prefer-empty';
1313

1414
//------------------------------------------------------------------------------
1515
// Tests

src/__tests__/lib/rules/prefer-focus.js

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,7 @@
33
* @author Ben Monro
44
*/
55

6-
import { RuleTester } from "eslint";
6+
import { FlatCompatRuleTester as RuleTester } from '../../rule-tester';
77
import * as rule from "../../../rules/prefer-focus";
88

99
const ruleTester = new RuleTester();

src/__tests__/lib/rules/prefer-in-document.js

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,7 @@
77
// Requirements
88
//------------------------------------------------------------------------------
99

10-
import { RuleTester } from "eslint";
10+
import { FlatCompatRuleTester as RuleTester } from '../../rule-tester';
1111
import * as rule from "../../../rules/prefer-in-document";
1212

1313
//------------------------------------------------------------------------------

src/__tests__/lib/rules/prefer-prefer-to-have-class.js

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
import { RuleTester } from "eslint";
1+
import { FlatCompatRuleTester as RuleTester } from '../../rule-tester';
22
import * as rule from "../../../rules/prefer-to-have-class";
33

44
const errors = [{ messageId: "use-to-have-class" }];

src/__tests__/lib/rules/prefer-to-have-attribute.js

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,7 @@
88
// Requirements
99
//------------------------------------------------------------------------------
1010

11-
import { RuleTester } from "eslint";
11+
import { FlatCompatRuleTester as RuleTester } from '../../rule-tester';
1212
import * as rule from "../../../rules/prefer-to-have-attribute";
1313

1414
//------------------------------------------------------------------------------

src/__tests__/lib/rules/prefer-to-have-style.js

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
import { RuleTester } from "eslint";
1+
import { FlatCompatRuleTester as RuleTester } from '../../rule-tester';
22
import * as rule from "../../../rules/prefer-to-have-style";
33

44
const errors = [

src/__tests__/lib/rules/prefer-to-have-text-content.js

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,7 @@
88
// Requirements
99
//------------------------------------------------------------------------------
1010

11-
import { RuleTester } from "eslint";
11+
import { FlatCompatRuleTester as RuleTester } from '../../rule-tester';
1212
import * as rule from "../../../rules/prefer-to-have-text-content";
1313

1414
//------------------------------------------------------------------------------

src/__tests__/lib/rules/prefer-to-have-value.js

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,7 @@
88
// Requirements
99
//------------------------------------------------------------------------------
1010

11-
import { RuleTester } from "eslint";
11+
import { FlatCompatRuleTester as RuleTester } from '../../rule-tester';
1212
import * as rule from "../../../rules/prefer-to-have-value";
1313

1414
//------------------------------------------------------------------------------

src/__tests__/rule-tester.js

Lines changed: 58 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,58 @@
1+
import { RuleTester } from 'eslint';
2+
import semver from 'semver';
3+
import { version as eslintVersion } from 'eslint/package.json';
4+
5+
export const usingFlatConfig = semver.major(eslintVersion) >= 9;
6+
7+
export class FlatCompatRuleTester extends RuleTester {
8+
constructor(testerConfig) {
9+
super(FlatCompatRuleTester._flatCompat(testerConfig));
10+
}
11+
12+
run(
13+
ruleName,
14+
rule,
15+
tests,
16+
) {
17+
super.run(ruleName, rule, {
18+
valid: tests.valid.map(t => FlatCompatRuleTester._flatCompat(t)),
19+
invalid: tests.invalid.map(t => FlatCompatRuleTester._flatCompat(t)),
20+
});
21+
}
22+
23+
static _flatCompat(config) {
24+
if (!config || !usingFlatConfig || typeof config === 'string') {
25+
return config;
26+
}
27+
28+
const obj = {
29+
languageOptions: { parserOptions: {} },
30+
};
31+
32+
for (const [key, value] of Object.entries(config)) {
33+
if (key === 'parser') {
34+
obj.languageOptions.parser = require(value);
35+
36+
continue;
37+
}
38+
39+
if (key === 'parserOptions') {
40+
for (const [option, val] of Object.entries(value)) {
41+
if (option === 'ecmaVersion' || option === 'sourceType') {
42+
obj.languageOptions[option] = val
43+
44+
continue;
45+
}
46+
47+
obj.languageOptions.parserOptions[option] = val;
48+
}
49+
50+
continue;
51+
}
52+
53+
obj[key] = value;
54+
}
55+
56+
return obj;
57+
}
58+
}

0 commit comments

Comments
 (0)