@@ -9,6 +9,10 @@ const error = {
9
9
message : 'Calls to require() should use string literals' ,
10
10
} ;
11
11
12
+ const dynamicImportError = {
13
+ message : 'Calls to import() should use string literals' ,
14
+ } ;
15
+
12
16
ruleTester . run ( 'no-dynamic-require' , rule , {
13
17
valid : [
14
18
test ( { code : 'import _ from "lodash"' } ) ,
@@ -22,6 +26,59 @@ ruleTester.run('no-dynamic-require', rule, {
22
26
test ( { code : 'var foo = require(`foo`)' } ) ,
23
27
test ( { code : 'var foo = require("./foo")' } ) ,
24
28
test ( { code : 'var foo = require("@scope/foo")' } ) ,
29
+
30
+ //dynamic import
31
+ test ( {
32
+ code : 'import("foo")' ,
33
+ parser : require . resolve ( 'babel-eslint' ) ,
34
+ options : [ { esmodule : true } ] ,
35
+ } ) ,
36
+ test ( {
37
+ code : 'import(`foo`)' ,
38
+ parser : require . resolve ( 'babel-eslint' ) ,
39
+ options : [ { esmodule : true } ] ,
40
+ } ) ,
41
+ test ( {
42
+ code : 'import("./foo")' ,
43
+ parser : require . resolve ( 'babel-eslint' ) ,
44
+ options : [ { esmodule : true } ] ,
45
+ } ) ,
46
+ test ( {
47
+ code : 'import("@scope/foo")' ,
48
+ parser : require . resolve ( 'babel-eslint' ) ,
49
+ options : [ { esmodule : true } ] ,
50
+ } ) ,
51
+ test ( {
52
+ code : 'var foo = import("foo")' ,
53
+ parser : require . resolve ( 'babel-eslint' ) ,
54
+ options : [ { esmodule : true } ] ,
55
+ } ) ,
56
+ test ( {
57
+ code : 'var foo = import(`foo`)' ,
58
+ parser : require . resolve ( 'babel-eslint' ) ,
59
+ options : [ { esmodule : true } ] ,
60
+ } ) ,
61
+ test ( {
62
+ code : 'var foo = import("./foo")' ,
63
+ parser : require . resolve ( 'babel-eslint' ) ,
64
+ options : [ { esmodule : true } ] ,
65
+ } ) ,
66
+ test ( {
67
+ code : 'var foo = import("@scope/foo")' ,
68
+ parser : require . resolve ( 'babel-eslint' ) ,
69
+ options : [ { esmodule : true } ] ,
70
+ } ) ,
71
+ test ( {
72
+ code : 'import("../" + name)' ,
73
+ errors : [ dynamicImportError ] ,
74
+ parser : require . resolve ( 'babel-eslint' ) ,
75
+ options : [ { esmodule : false } ] ,
76
+ } ) ,
77
+ test ( {
78
+ code : 'import(`../${name}`)' ,
79
+ errors : [ dynamicImportError ] ,
80
+ parser : require . resolve ( 'babel-eslint' ) ,
81
+ } ) ,
25
82
] ,
26
83
invalid : [
27
84
test ( {
@@ -43,6 +100,33 @@ ruleTester.run('no-dynamic-require', rule, {
43
100
test ( {
44
101
code : 'require(name + "foo", "bar")' ,
45
102
errors : [ error ] ,
103
+ options : [ { esmodule : true } ] ,
104
+ } ) ,
105
+
106
+ // dynamic import
107
+ test ( {
108
+ code : 'import("../" + name)' ,
109
+ errors : [ dynamicImportError ] ,
110
+ parser : require . resolve ( 'babel-eslint' ) ,
111
+ options : [ { esmodule : true } ] ,
112
+ } ) ,
113
+ test ( {
114
+ code : 'import(`../${name}`)' ,
115
+ errors : [ dynamicImportError ] ,
116
+ parser : require . resolve ( 'babel-eslint' ) ,
117
+ options : [ { esmodule : true } ] ,
118
+ } ) ,
119
+ test ( {
120
+ code : 'import(name)' ,
121
+ errors : [ dynamicImportError ] ,
122
+ parser : require . resolve ( 'babel-eslint' ) ,
123
+ options : [ { esmodule : true } ] ,
124
+ } ) ,
125
+ test ( {
126
+ code : 'import(name())' ,
127
+ errors : [ dynamicImportError ] ,
128
+ parser : require . resolve ( 'babel-eslint' ) ,
129
+ options : [ { esmodule : true } ] ,
46
130
} ) ,
47
131
test ( {
48
132
code : 'require(`foo${x}`)' ,
0 commit comments