@@ -112,41 +112,49 @@ ruleTester.run('no-unused-modules', rule, {
112
112
options : unusedExportsOptions ,
113
113
code : 'import { o2 } from "./file-o";export default () => 12' ,
114
114
filename : testFilePath ( './no-unused-modules/file-a.js' ) ,
115
+ parser : require . resolve ( 'babel-eslint' ) ,
115
116
} ) ,
116
117
test ( {
117
118
options : unusedExportsOptions ,
118
119
code : 'export const b = 2' ,
119
120
filename : testFilePath ( './no-unused-modules/file-b.js' ) ,
121
+ parser : require . resolve ( 'babel-eslint' ) ,
120
122
} ) ,
121
123
test ( {
122
124
options : unusedExportsOptions ,
123
125
code : 'const c1 = 3; function c2() { return 3 }; export { c1, c2 }' ,
124
126
filename : testFilePath ( './no-unused-modules/file-c.js' ) ,
127
+ parser : require . resolve ( 'babel-eslint' ) ,
125
128
} ) ,
126
129
test ( {
127
130
options : unusedExportsOptions ,
128
131
code : 'export function d() { return 4 }' ,
129
132
filename : testFilePath ( './no-unused-modules/file-d.js' ) ,
133
+ parser : require . resolve ( 'babel-eslint' ) ,
130
134
} ) ,
131
135
test ( {
132
136
options : unusedExportsOptions ,
133
137
code : 'export class q { q0() {} }' ,
134
138
filename : testFilePath ( './no-unused-modules/file-q.js' ) ,
139
+ parser : require . resolve ( 'babel-eslint' ) ,
135
140
} ) ,
136
141
test ( {
137
142
options : unusedExportsOptions ,
138
143
code : 'const e0 = 5; export { e0 as e }' ,
139
144
filename : testFilePath ( './no-unused-modules/file-e.js' ) ,
145
+ parser : require . resolve ( 'babel-eslint' ) ,
140
146
} ) ,
141
147
test ( {
142
148
options : unusedExportsOptions ,
143
149
code : 'const l0 = 5; const l = 10; export { l0 as l1, l }; export default () => {}' ,
144
150
filename : testFilePath ( './no-unused-modules/file-l.js' ) ,
151
+ parser : require . resolve ( 'babel-eslint' ) ,
145
152
} ) ,
146
153
test ( {
147
154
options : unusedExportsOptions ,
148
155
code : 'const o0 = 0; const o1 = 1; export { o0, o1 as o2 }; export default () => {}' ,
149
156
filename : testFilePath ( './no-unused-modules/file-o.js' ) ,
157
+ parser : require . resolve ( 'babel-eslint' ) ,
150
158
} ) ,
151
159
] ,
152
160
invalid : [
@@ -234,7 +242,72 @@ ruleTester.run('no-unused-modules', rule, {
234
242
] ,
235
243
} ) ;
236
244
237
- // test for export from
245
+
246
+ describe ( 'dynamic imports' , ( ) => {
247
+ if ( semver . satisfies ( eslintPkg . version , '< 6' ) ) {
248
+ beforeEach ( function ( ) {
249
+ this . skip ( ) ;
250
+ } ) ;
251
+ return ;
252
+ }
253
+
254
+ // test for unused exports with `import()`
255
+ ruleTester . run ( 'no-unused-modules' , rule , {
256
+ valid : [
257
+ test ( {
258
+ options : unusedExportsOptions ,
259
+ code : `
260
+ export const a = 10
261
+ export const b = 20
262
+ export const c = 30
263
+ const d = 40
264
+ export default d
265
+ ` ,
266
+ parser : require . resolve ( 'babel-eslint' ) ,
267
+ filename : testFilePath ( './no-unused-modules/exports-for-dynamic-js.js' ) ,
268
+ } ) ,
269
+ ] ,
270
+ invalid : [
271
+ test ( {
272
+ options : unusedExportsOptions ,
273
+ code : `
274
+ export const a = 10
275
+ export const b = 20
276
+ export const c = 30
277
+ const d = 40
278
+ export default d
279
+ ` ,
280
+ parser : require . resolve ( 'babel-eslint' ) ,
281
+ filename : testFilePath ( './no-unused-modules/exports-for-dynamic-js-2.js' ) ,
282
+ errors : [
283
+ error ( `exported declaration 'a' not used within other modules` ) ,
284
+ error ( `exported declaration 'b' not used within other modules` ) ,
285
+ error ( `exported declaration 'c' not used within other modules` ) ,
286
+ error ( `exported declaration 'default' not used within other modules` ) ,
287
+ ] } ) ,
288
+ ] ,
289
+ } ) ;
290
+ typescriptRuleTester . run ( 'no-unused-modules' , rule , {
291
+ valid : [
292
+ test ( {
293
+ options : unusedExportsTypescriptOptions ,
294
+ code : `
295
+ export const ts_a = 10
296
+ export const ts_b = 20
297
+ export const ts_c = 30
298
+ const ts_d = 40
299
+ export default ts_d
300
+ ` ,
301
+ parser : require . resolve ( '@typescript-eslint/parser' ) ,
302
+ filename : testFilePath ( './no-unused-modules/typescript/exports-for-dynamic-ts.ts' ) ,
303
+ } ) ,
304
+ ] ,
305
+ invalid : [
306
+ ] ,
307
+ } ) ;
308
+ } ) ;
309
+
310
+ // // test for export from
238
311
ruleTester . run ( 'no-unused-modules' , rule , {
239
312
valid : [
240
313
test ( {
0 commit comments