Skip to content

Commit ed3b1cf

Browse files
committed
[Tests] jsx-uses-vars, jsx-uses-react: fix no-unused-vars tests in eslint v9.17
eslint/eslint#18352 added suggestions to no-unused-vars in eslint v9.17.0
1 parent 033ad19 commit ed3b1cf

File tree

3 files changed

+162
-14
lines changed

3 files changed

+162
-14
lines changed

Diff for: tests/index.js

+1
Original file line numberDiff line numberDiff line change
@@ -10,6 +10,7 @@ const plugin = require('..');
1010
const index = require('../lib/rules');
1111

1212
const ruleFiles = fs.readdirSync(path.resolve(__dirname, '../lib/rules/'))
13+
.filter((f) => f.endsWith('.js'))
1314
.map((f) => path.basename(f, '.js'))
1415
.filter((f) => f !== 'index');
1516

Diff for: tests/lib/rules/jsx-uses-react.js

+45-6
Original file line numberDiff line numberDiff line change
@@ -60,28 +60,67 @@ ruleTester.run('no-unused-vars', rule, {
6060
invalid: parsers.all([
6161
{
6262
code: '/*eslint react/jsx-uses-react:1*/ var React;',
63-
errors: [{ message: '\'React\' is defined but never used.' }],
63+
errors: [{
64+
message: '\'React\' is defined but never used.',
65+
suggestions: [{
66+
messageId: 'removeVar',
67+
output: '/*eslint react/jsx-uses-react:1*/ ',
68+
}],
69+
}],
6470
},
6571
{
6672
code: '/*eslint react/jsx-uses-react:1*/ /** @jsx Foo */ var React; <div />;',
67-
errors: [{ message: '\'React\' is defined but never used.' }],
73+
errors: [{
74+
message: '\'React\' is defined but never used.',
75+
suggestions: [{
76+
messageId: 'removeVar',
77+
output: '/*eslint react/jsx-uses-react:1*/ /** @jsx Foo */ <div />;',
78+
}],
79+
}],
6880
},
6981
{
7082
code: '/*eslint react/jsx-uses-react:1*/ var React; <div />;',
71-
errors: [{ message: '\'React\' is defined but never used.' }],
83+
errors: [{
84+
message: '\'React\' is defined but never used.',
85+
suggestions: [{
86+
messageId: 'removeVar',
87+
output: '/*eslint react/jsx-uses-react:1*/ <div />;',
88+
}],
89+
}],
7290
settings,
7391
},
7492
{
7593
code: '/*eslint react/jsx-uses-react:1*/ var Frag; <></>;',
76-
errors: [{ message: '\'Frag\' is defined but never used.' }],
94+
errors: [{
95+
message: '\'Frag\' is defined but never used.',
96+
suggestions: [{
97+
messageId: 'removeVar',
98+
output: '/*eslint react/jsx-uses-react:1*/ <></>;',
99+
}],
100+
}],
77101
features: ['fragment'],
78102
settings: { react: { fragment: 'Fragment' } },
79103
},
80104
{
81105
code: '/*eslint react/jsx-uses-react:1*/ var React; <></>;',
82106
features: ['fragment'],
83-
errors: [{ message: '\'React\' is defined but never used.' }],
107+
errors: [{
108+
message: '\'React\' is defined but never used.',
109+
suggestions: [{
110+
messageId: 'removeVar',
111+
output: '/*eslint react/jsx-uses-react:1*/ <></>;',
112+
}],
113+
}],
84114
settings,
85115
},
86-
].map(parsers.disableNewTS)),
116+
].map(parsers.disableNewTS).map((test) => {
117+
if (!rule.meta.hasSuggestions) {
118+
test.errors = test.errors.map((error) => {
119+
// https://github.com/eslint/eslint/pull/18352 added suggestions to no-unused-vars in eslint v9.17.0
120+
delete error.suggestions;
121+
return error;
122+
});
123+
}
124+
return test;
125+
})),
87126
});

Diff for: tests/lib/rules/jsx-uses-vars.js

+116-8
Original file line numberDiff line numberDiff line change
@@ -10,6 +10,7 @@
1010
// -----------------------------------------------------------------------------
1111

1212
const ruleNoUnusedVars = require('../../helpers/getESLintCoreRule')('no-unused-vars');
13+
1314
const rulePreferConst = require('../../helpers/getESLintCoreRule')('prefer-const');
1415

1516
const RuleTester = require('../../helpers/ruleTester');
@@ -136,7 +137,13 @@ ruleTester.run('no-unused-vars', ruleNoUnusedVars, {
136137
invalid: parsers.all([
137138
{
138139
code: '/* eslint react/jsx-uses-vars: 1 */ var App;',
139-
errors: [{ message: '\'App\' is defined but never used.' }],
140+
errors: [{
141+
message: '\'App\' is defined but never used.',
142+
suggestions: [{
143+
messageId: 'removeVar',
144+
output: '/* eslint react/jsx-uses-vars: 1 */ ',
145+
}],
146+
}],
140147
},
141148
{
142149
code: `
@@ -145,7 +152,18 @@ ruleTester.run('no-unused-vars', ruleNoUnusedVars, {
145152
var unused;
146153
React.render(<App unused=""/>);
147154
`,
148-
errors: [{ message: '\'unused\' is defined but never used.' }],
155+
errors: [{
156+
message: '\'unused\' is defined but never used.',
157+
suggestions: [{
158+
messageId: 'removeVar',
159+
output: `
160+
/* eslint react/jsx-uses-vars: 1 */
161+
var App;
162+
${''}
163+
React.render(<App unused=""/>);
164+
`,
165+
}],
166+
}],
149167
},
150168
{
151169
code: `
@@ -155,8 +173,30 @@ ruleTester.run('no-unused-vars', ruleNoUnusedVars, {
155173
React.render(<App:Hello/>);
156174
`,
157175
errors: [
158-
{ message: '\'App\' is defined but never used.' },
159-
{ message: '\'Hello\' is defined but never used.' },
176+
{
177+
message: '\'App\' is defined but never used.',
178+
suggestions: [{
179+
messageId: 'removeVar',
180+
output: `
181+
/* eslint react/jsx-uses-vars: 1 */
182+
${''}
183+
var Hello;
184+
React.render(<App:Hello/>);
185+
`,
186+
}],
187+
},
188+
{
189+
message: '\'Hello\' is defined but never used.',
190+
suggestions: [{
191+
messageId: 'removeVar',
192+
output: `
193+
/* eslint react/jsx-uses-vars: 1 */
194+
var App;
195+
${''}
196+
React.render(<App:Hello/>);
197+
`,
198+
}],
199+
},
160200
],
161201
features: ['jsx namespace'],
162202
},
@@ -167,14 +207,34 @@ ruleTester.run('no-unused-vars', ruleNoUnusedVars, {
167207
var Input;
168208
React.render(<Button.Input unused=""/>);
169209
`,
170-
errors: [{ message: '\'Input\' is defined but never used.' }],
210+
errors: [{
211+
message: '\'Input\' is defined but never used.',
212+
suggestions: [{
213+
messageId: 'removeVar',
214+
output: `
215+
/* eslint react/jsx-uses-vars: 1 */
216+
var Button;
217+
${''}
218+
React.render(<Button.Input unused=""/>);
219+
`,
220+
}],
221+
}],
171222
},
172223
{
173224
code: `
174225
/* eslint react/jsx-uses-vars: 1 */
175226
class unused {}
176227
`,
177-
errors: [{ message: '\'unused\' is defined but never used.' }],
228+
errors: [{
229+
message: '\'unused\' is defined but never used.',
230+
suggestions: [{
231+
messageId: 'removeVar',
232+
output: `
233+
/* eslint react/jsx-uses-vars: 1 */
234+
${''}
235+
`,
236+
}],
237+
}],
178238
},
179239
{
180240
code: `
@@ -190,6 +250,13 @@ ruleTester.run('no-unused-vars', ruleNoUnusedVars, {
190250
{
191251
message: '\'HelloMessage\' is defined but never used.',
192252
line: 3,
253+
suggestions: [{
254+
messageId: 'removeVar',
255+
output: `
256+
/* eslint react/jsx-uses-vars: 1 */
257+
${''}
258+
`,
259+
}],
193260
},
194261
],
195262
},
@@ -207,6 +274,18 @@ ruleTester.run('no-unused-vars', ruleNoUnusedVars, {
207274
{
208275
message: '\'Hello\' is defined but never used.',
209276
line: 3,
277+
suggestions: [{
278+
messageId: 'removeVar',
279+
output: `
280+
/* eslint react/jsx-uses-vars: 1 */
281+
${''}
282+
function Greetings() {
283+
const Hello = require('Hello').default;
284+
return <Hello />;
285+
}
286+
Greetings();
287+
`,
288+
}],
210289
},
211290
],
212291
},
@@ -216,7 +295,17 @@ ruleTester.run('no-unused-vars', ruleNoUnusedVars, {
216295
var lowercase;
217296
React.render(<lowercase />);
218297
`,
219-
errors: [{ message: '\'lowercase\' is defined but never used.' }],
298+
errors: [{
299+
message: '\'lowercase\' is defined but never used.',
300+
suggestions: [{
301+
messageId: 'removeVar',
302+
output: `
303+
/* eslint react/jsx-uses-vars: 1 */
304+
${''}
305+
React.render(<lowercase />);
306+
`,
307+
}],
308+
}],
220309
},
221310
{
222311
code: `
@@ -230,10 +319,29 @@ ruleTester.run('no-unused-vars', ruleNoUnusedVars, {
230319
{
231320
message: '\'div\' is defined but never used.',
232321
line: 3,
322+
suggestions: [{
323+
messageId: 'removeVar',
324+
output: `
325+
/* eslint react/jsx-uses-vars: 1 */
326+
function Greetings() {
327+
return <div />;
328+
}
329+
Greetings();
330+
`,
331+
}],
233332
},
234333
],
235334
},
236-
]),
335+
].map((test) => {
336+
if (!ruleNoUnusedVars.meta.hasSuggestions) {
337+
test.errors = test.errors.map((error) => {
338+
// https://github.com/eslint/eslint/pull/18352 added suggestions to no-unused-vars in eslint v9.17.0
339+
delete error.suggestions;
340+
return error;
341+
});
342+
}
343+
return test;
344+
})),
237345
});
238346

239347
// Check compatibility with eslint prefer-const rule (#716)

0 commit comments

Comments
 (0)