1
- import { parsers , test } from '../utils' ;
1
+ import { parsers , test , testVersion } from '../utils' ;
2
2
3
3
import { RuleTester } from 'eslint' ;
4
+ import flatMap from 'array.prototype.flatmap' ;
4
5
5
6
const ruleTester = new RuleTester ( ) ;
6
7
const rule = require ( 'rules/no-dynamic-require' ) ;
@@ -28,56 +29,93 @@ ruleTester.run('no-dynamic-require', rule, {
28
29
test ( { code : 'var foo = require("@scope/foo")' } ) ,
29
30
30
31
//dynamic import
31
- test ( {
32
- code : 'import("foo")' ,
33
- parser : parsers . BABEL_OLD ,
34
- options : [ { esmodule : true } ] ,
35
- } ) ,
36
- test ( {
37
- code : 'import(`foo`)' ,
38
- parser : parsers . BABEL_OLD ,
39
- options : [ { esmodule : true } ] ,
40
- } ) ,
41
- test ( {
42
- code : 'import("./foo")' ,
43
- parser : parsers . BABEL_OLD ,
44
- options : [ { esmodule : true } ] ,
45
- } ) ,
46
- test ( {
47
- code : 'import("@scope/foo")' ,
48
- parser : parsers . BABEL_OLD ,
49
- options : [ { esmodule : true } ] ,
50
- } ) ,
51
- test ( {
52
- code : 'var foo = import("foo")' ,
53
- parser : parsers . BABEL_OLD ,
54
- options : [ { esmodule : true } ] ,
55
- } ) ,
56
- test ( {
57
- code : 'var foo = import(`foo`)' ,
58
- parser : parsers . BABEL_OLD ,
59
- options : [ { esmodule : true } ] ,
60
- } ) ,
61
- test ( {
62
- code : 'var foo = import("./foo")' ,
63
- parser : parsers . BABEL_OLD ,
64
- options : [ { esmodule : true } ] ,
65
- } ) ,
66
- test ( {
67
- code : 'var foo = import("@scope/foo")' ,
68
- parser : parsers . BABEL_OLD ,
69
- options : [ { esmodule : true } ] ,
70
- } ) ,
71
- test ( {
72
- code : 'import("../" + name)' ,
73
- errors : [ dynamicImportError ] ,
74
- parser : parsers . BABEL_OLD ,
75
- options : [ { esmodule : false } ] ,
76
- } ) ,
77
- test ( {
78
- code : 'import(`../${name}`)' ,
79
- errors : [ dynamicImportError ] ,
80
- parser : parsers . BABEL_OLD ,
32
+ ...flatMap ( [ parsers . ESPREE , parsers . BABEL_OLD ] , ( parser ) => {
33
+ const _test =
34
+ parser === parsers . ESPREE
35
+ ? ( testObj ) => testVersion ( '>= 6.2.0' , ( ) => testObj )
36
+ : ( testObj ) => test ( testObj ) ;
37
+ return [ ] . concat (
38
+ _test ( {
39
+ code : 'import("foo")' ,
40
+ options : [ { esmodule : true } ] ,
41
+ parser,
42
+ parserOptions : {
43
+ ecmaVersion : 2020 ,
44
+ } ,
45
+ } ) ,
46
+ _test ( {
47
+ code : 'import(`foo`)' ,
48
+ options : [ { esmodule : true } ] ,
49
+ parser,
50
+ parserOptions : {
51
+ ecmaVersion : 2020 ,
52
+ } ,
53
+ } ) ,
54
+ _test ( {
55
+ code : 'import("./foo")' ,
56
+ options : [ { esmodule : true } ] ,
57
+ parser,
58
+ parserOptions : {
59
+ ecmaVersion : 2020 ,
60
+ } ,
61
+ } ) ,
62
+ _test ( {
63
+ code : 'import("@scope/foo")' ,
64
+ options : [ { esmodule : true } ] ,
65
+ parser,
66
+ parserOptions : {
67
+ ecmaVersion : 2020 ,
68
+ } ,
69
+ } ) ,
70
+ _test ( {
71
+ code : 'var foo = import("foo")' ,
72
+ options : [ { esmodule : true } ] ,
73
+ parser,
74
+ parserOptions : {
75
+ ecmaVersion : 2020 ,
76
+ } ,
77
+ } ) ,
78
+ _test ( {
79
+ code : 'var foo = import(`foo`)' ,
80
+ options : [ { esmodule : true } ] ,
81
+ parser,
82
+ parserOptions : {
83
+ ecmaVersion : 2020 ,
84
+ } ,
85
+ } ) ,
86
+ _test ( {
87
+ code : 'var foo = import("./foo")' ,
88
+ options : [ { esmodule : true } ] ,
89
+ parser,
90
+ parserOptions : {
91
+ ecmaVersion : 2020 ,
92
+ } ,
93
+ } ) ,
94
+ _test ( {
95
+ code : 'var foo = import("@scope/foo")' ,
96
+ options : [ { esmodule : true } ] ,
97
+ parser,
98
+ parserOptions : {
99
+ ecmaVersion : 2020 ,
100
+ } ,
101
+ } ) ,
102
+ _test ( {
103
+ code : 'import("../" + name)' ,
104
+ errors : [ dynamicImportError ] ,
105
+ parser,
106
+ parserOptions : {
107
+ ecmaVersion : 2020 ,
108
+ } ,
109
+ } ) ,
110
+ _test ( {
111
+ code : 'import(`../${name}`)' ,
112
+ errors : [ dynamicImportError ] ,
113
+ parser,
114
+ parserOptions : {
115
+ ecmaVersion : 2020 ,
116
+ } ,
117
+ } ) ,
118
+ ) ;
81
119
} ) ,
82
120
] ,
83
121
invalid : [
@@ -104,29 +142,49 @@ ruleTester.run('no-dynamic-require', rule, {
104
142
} ) ,
105
143
106
144
// dynamic import
107
- test ( {
108
- code : 'import("../" + name)' ,
109
- errors : [ dynamicImportError ] ,
110
- parser : parsers . BABEL_OLD ,
111
- options : [ { esmodule : true } ] ,
112
- } ) ,
113
- test ( {
114
- code : 'import(`../${name}`)' ,
115
- errors : [ dynamicImportError ] ,
116
- parser : parsers . BABEL_OLD ,
117
- options : [ { esmodule : true } ] ,
118
- } ) ,
119
- test ( {
120
- code : 'import(name)' ,
121
- errors : [ dynamicImportError ] ,
122
- parser : parsers . BABEL_OLD ,
123
- options : [ { esmodule : true } ] ,
124
- } ) ,
125
- test ( {
126
- code : 'import(name())' ,
127
- errors : [ dynamicImportError ] ,
128
- parser : parsers . BABEL_OLD ,
129
- options : [ { esmodule : true } ] ,
145
+ ...flatMap ( [ parsers . ESPREE , parsers . BABEL_OLD ] , ( parser ) => {
146
+ const _test =
147
+ parser === parsers . ESPREE
148
+ ? ( testObj ) => testVersion ( '>= 6.2.0' , ( ) => testObj )
149
+ : ( testObj ) => test ( testObj ) ;
150
+ return [ ] . concat (
151
+ _test ( {
152
+ code : 'import("../" + name)' ,
153
+ errors : [ dynamicImportError ] ,
154
+ options : [ { esmodule : true } ] ,
155
+ parser,
156
+ parserOptions : {
157
+ ecmaVersion : 2020 ,
158
+ } ,
159
+ } ) ,
160
+ _test ( {
161
+ code : 'import(`../${name}`)' ,
162
+ errors : [ dynamicImportError ] ,
163
+ options : [ { esmodule : true } ] ,
164
+ parser,
165
+ parserOptions : {
166
+ ecmaVersion : 2020 ,
167
+ } ,
168
+ } ) ,
169
+ _test ( {
170
+ code : 'import(name)' ,
171
+ errors : [ dynamicImportError ] ,
172
+ options : [ { esmodule : true } ] ,
173
+ parser,
174
+ parserOptions : {
175
+ ecmaVersion : 2020 ,
176
+ } ,
177
+ } ) ,
178
+ _test ( {
179
+ code : 'import(name())' ,
180
+ errors : [ dynamicImportError ] ,
181
+ options : [ { esmodule : true } ] ,
182
+ parser,
183
+ parserOptions : {
184
+ ecmaVersion : 2020 ,
185
+ } ,
186
+ } ) ,
187
+ ) ;
130
188
} ) ,
131
189
test ( {
132
190
code : 'require(`foo${x}`)' ,
0 commit comments