Skip to content

Commit eb520f6

Browse files
committed
test: use flat compat rule tester
1 parent b3af57c commit eb520f6

Some content is hidden

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

45 files changed

+110
-52
lines changed

tests/src/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 { version as eslintVersion } from 'eslint/package.json';
3+
import semver from 'semver';
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+
}

tests/src/rules/consistent-type-specifier-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 { test, parsers, tsVersionSatisfies, eslintVersionSatisfies, typescriptEslintParserSatisfies } from '../utils';
33

44
const rule = require('rules/consistent-type-specifier-style');

tests/src/rules/default.js

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
import path from 'path';
22
import { test, testVersion, SYNTAX_CASES, getTSParsers, parsers } from '../utils';
3-
import { RuleTester } from 'eslint';
3+
import { FlatCompatRuleTester as RuleTester } from '../rule-tester';
44
import semver from 'semver';
55
import { version as tsEslintVersion } from 'typescript-eslint-parser/package.json';
66

tests/src/rules/dynamic-import-chunkname.js

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
import { SYNTAX_CASES, getTSParsers, parsers } from '../utils';
2-
import { RuleTester } from 'eslint';
2+
import { FlatCompatRuleTester as RuleTester } from '../rule-tester';
33
import semver from 'semver';
44

55
const rule = require('rules/dynamic-import-chunkname');

tests/src/rules/export.js

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
import { test, testFilePath, SYNTAX_CASES, getTSParsers, testVersion } from '../utils';
22

3-
import { RuleTester } from 'eslint';
3+
import { FlatCompatRuleTester as RuleTester } from '../rule-tester';
44
import eslintPkg from 'eslint/package.json';
55
import semver from 'semver';
66
import { version as tsEslintVersion } from 'typescript-eslint-parser/package.json';

tests/src/rules/exports-last.js

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
import { test } from '../utils';
22

3-
import { RuleTester } from 'eslint';
3+
import { FlatCompatRuleTester as RuleTester } from '../rule-tester';
44
import rule from 'rules/exports-last';
55

66
const ruleTester = new RuleTester();

tests/src/rules/extensions.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 rule from 'rules/extensions';
33
import { getTSParsers, test, testFilePath, parsers } from '../utils';
44

tests/src/rules/first.js

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,7 @@ import { test, getTSParsers, testVersion } from '../utils';
22
import fs from 'fs';
33
import path from 'path';
44

5-
import { RuleTester } from 'eslint';
5+
import { FlatCompatRuleTester as RuleTester } from '../rule-tester';
66

77
const ruleTester = new RuleTester();
88
const rule = require('rules/first');

tests/src/rules/group-exports.js

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
import { test } from '../utils';
2-
import { RuleTester } from 'eslint';
2+
import { FlatCompatRuleTester as RuleTester } from '../rule-tester';
33
import rule from 'rules/group-exports';
44
import { resolve } from 'path';
55
import { default as babelPresetFlow } from 'babel-preset-flow';

tests/src/rules/max-dependencies.js

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
import { test, getTSParsers, parsers } from '../utils';
22

3-
import { RuleTester } from 'eslint';
3+
import { FlatCompatRuleTester as RuleTester } from '../rule-tester';
44

55
const ruleTester = new RuleTester();
66
const rule = require('rules/max-dependencies');

0 commit comments

Comments
 (0)