forked from jsx-eslint/eslint-plugin-react
-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathflat-config.js
117 lines (95 loc) · 4.59 KB
/
flat-config.js
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
/* eslint-env mocha */
'use strict';
const semver = require('semver');
const eslintPkg = require('eslint/package.json');
if (!semver.satisfies(eslintPkg.version, '>= 8.23.0')) {
return;
}
const ESLint = semver.major(eslintPkg.version) < 9
? require('eslint/use-at-your-own-risk').FlatESLint // eslint-disable-line import/no-unresolved -- false positive
: require('eslint').ESLint;
const path = require('path');
const assert = require('assert');
describe('eslint-plugin-react in flat config', () => {
const fixturesdDir = path.resolve(__dirname, 'fixtures', 'flat-config');
it('should work when the plugin is used directly', () => {
const eslint = new ESLint({
cwd: path.resolve(fixturesdDir, 'plugin'),
});
return eslint.lintFiles(['test.jsx']).then((results) => {
const result = results[0];
assert.strictEqual(result.messages.length, 1);
assert.strictEqual(result.messages[0].severity, 1);
assert.strictEqual(result.messages[0].ruleId, 'react/jsx-no-literals');
assert.strictEqual(result.messages[0].messageId, 'literalNotInJSXExpression');
});
});
['root', 'deep'].forEach((configAccess) => {
const overrideConfigFile = `eslint.config-${configAccess}.js`;
it(`should work when the plugin is used with "all" config (${configAccess})`, () => {
const eslint = new ESLint({
cwd: path.resolve(fixturesdDir, 'config-all'),
overrideConfigFile,
});
return eslint.lintFiles(['test.jsx']).then((results) => {
const result = results[0];
assert.strictEqual(result.messages.length, 3);
assert.strictEqual(result.messages[0].severity, 2);
assert.strictEqual(result.messages[0].ruleId, 'react/react-in-jsx-scope');
assert.strictEqual(result.messages[0].messageId, 'notInScope');
assert.strictEqual(result.messages[1].severity, 2);
assert.strictEqual(result.messages[1].ruleId, 'react/no-unknown-property');
assert.strictEqual(result.messages[1].messageId, 'unknownProp');
assert.strictEqual(result.messages[2].severity, 2);
assert.strictEqual(result.messages[2].ruleId, 'react/jsx-no-literals');
assert.strictEqual(result.messages[2].messageId, 'literalNotInJSXExpression');
});
});
it(`should work when the plugin is used with "recommended" config (${configAccess})`, () => {
const eslint = new ESLint({
cwd: path.resolve(fixturesdDir, 'config-recommended'),
overrideConfigFile,
});
return eslint.lintFiles(['test.jsx']).then((results) => {
const result = results[0];
assert.strictEqual(result.messages.length, 2);
assert.strictEqual(result.messages[0].severity, 2);
assert.strictEqual(result.messages[0].ruleId, 'react/react-in-jsx-scope');
assert.strictEqual(result.messages[0].messageId, 'notInScope');
assert.strictEqual(result.messages[1].severity, 2);
assert.strictEqual(result.messages[1].ruleId, 'react/no-unknown-property');
assert.strictEqual(result.messages[1].messageId, 'unknownProp');
});
});
it(`should work when the plugin is used with "recommended" and "jsx-runtime" configs (${configAccess})`, () => {
const eslint = new ESLint({
cwd: path.resolve(fixturesdDir, 'config-jsx-runtime'),
overrideConfigFile,
});
return eslint.lintFiles(['test.jsx']).then((results) => {
const result = results[0];
assert.strictEqual(result.messages.length, 1);
assert.strictEqual(result.messages[0].severity, 2);
assert.strictEqual(result.messages[0].ruleId, 'react/no-unknown-property');
assert.strictEqual(result.messages[0].messageId, 'unknownProp');
});
});
// https://github.com/jsx-eslint/eslint-plugin-react/issues/3693
it(`should work when the plugin is used directly and with "recommended" config (${configAccess})`, () => {
const eslint = new ESLint({
cwd: path.resolve(fixturesdDir, 'plugin-and-config'),
overrideConfigFile,
});
return eslint.lintFiles(['test.jsx']).then((results) => {
const result = results[0];
assert.strictEqual(result.messages.length, 2);
assert.strictEqual(result.messages[0].severity, 2);
assert.strictEqual(result.messages[0].ruleId, 'react/react-in-jsx-scope');
assert.strictEqual(result.messages[0].messageId, 'notInScope');
assert.strictEqual(result.messages[1].severity, 2);
assert.strictEqual(result.messages[1].ruleId, 'react/no-unknown-property');
assert.strictEqual(result.messages[1].messageId, 'unknownProp');
});
});
});
});