]> git.proxmox.com Git - pve-eslint.git/blob - eslint/tests/lib/rules/no-import-assign.js
first commit
[pve-eslint.git] / eslint / tests / lib / rules / no-import-assign.js
1 /**
2 * @fileoverview Tests for no-import-assign rule.
3 * @author Toru Nagashima <https://github.com/mysticatea>
4 */
5
6 "use strict";
7
8 //------------------------------------------------------------------------------
9 // Requirements
10 //------------------------------------------------------------------------------
11
12 const rule = require("../../../lib/rules/no-import-assign"),
13 { RuleTester } = require("../../../lib/rule-tester");
14
15 //------------------------------------------------------------------------------
16 // Tests
17 //------------------------------------------------------------------------------
18
19 const ruleTester = new RuleTester({
20 parserOptions: {
21 ecmaVersion: 2018,
22 sourceType: "module"
23 },
24 globals: {
25 Reflect: "readonly"
26 }
27 });
28
29 ruleTester.run("no-import-assign", rule, {
30 valid: [
31 "import mod from 'mod'; mod.prop = 0",
32 "import mod from 'mod'; mod.prop += 0",
33 "import mod from 'mod'; mod.prop++",
34 "import mod from 'mod'; delete mod.prop",
35 "import mod from 'mod'; for (mod.prop in foo);",
36 "import mod from 'mod'; for (mod.prop of foo);",
37 "import mod from 'mod'; [mod.prop] = foo;",
38 "import mod from 'mod'; [...mod.prop] = foo;",
39 "import mod from 'mod'; ({ bar: mod.prop } = foo);",
40 "import mod from 'mod'; ({ ...mod.prop } = foo);",
41 "import {named} from 'mod'; named.prop = 0",
42 "import {named} from 'mod'; named.prop += 0",
43 "import {named} from 'mod'; named.prop++",
44 "import {named} from 'mod'; delete named.prop",
45 "import {named} from 'mod'; for (named.prop in foo);",
46 "import {named} from 'mod'; for (named.prop of foo);",
47 "import {named} from 'mod'; [named.prop] = foo;",
48 "import {named} from 'mod'; [...named.prop] = foo;",
49 "import {named} from 'mod'; ({ bar: named.prop } = foo);",
50 "import {named} from 'mod'; ({ ...named.prop } = foo);",
51 "import * as mod from 'mod'; mod.named.prop = 0",
52 "import * as mod from 'mod'; mod.named.prop += 0",
53 "import * as mod from 'mod'; mod.named.prop++",
54 "import * as mod from 'mod'; delete mod.named.prop",
55 "import * as mod from 'mod'; for (mod.named.prop in foo);",
56 "import * as mod from 'mod'; for (mod.named.prop of foo);",
57 "import * as mod from 'mod'; [mod.named.prop] = foo;",
58 "import * as mod from 'mod'; [...mod.named.prop] = foo;",
59 "import * as mod from 'mod'; ({ bar: mod.named.prop } = foo);",
60 "import * as mod from 'mod'; ({ ...mod.named.prop } = foo);",
61 "import * as mod from 'mod'; obj[mod] = 0",
62 "import * as mod from 'mod'; obj[mod.named] = 0",
63 "import * as mod from 'mod'; for (var foo in mod.named);",
64 "import * as mod from 'mod'; for (var foo of mod.named);",
65 "import * as mod from 'mod'; [bar = mod.named] = foo;",
66 "import * as mod from 'mod'; ({ bar = mod.named } = foo);",
67 "import * as mod from 'mod'; ({ bar: baz = mod.named } = foo);",
68 "import * as mod from 'mod'; ({ [mod.named]: bar } = foo);",
69 "import * as mod from 'mod'; var obj = { ...mod.named };",
70 "import * as mod from 'mod'; var obj = { foo: mod.named };",
71 "import mod from 'mod'; { let mod = 0; mod = 1 }",
72 "import * as mod from 'mod'; { let mod = 0; mod = 1 }",
73 "import * as mod from 'mod'; { let mod = 0; mod.named = 1 }",
74 "import {} from 'mod'",
75 "import 'mod'",
76 "import mod from 'mod'; Object.assign(mod, obj);",
77 "import {named} from 'mod'; Object.assign(named, obj);",
78 "import * as mod from 'mod'; Object.assign(mod.prop, obj);",
79 "import * as mod from 'mod'; Object.assign(obj, mod, other);",
80 "import * as mod from 'mod'; Object[assign](mod, obj);",
81 "import * as mod from 'mod'; Object.getPrototypeOf(mod);",
82 "import * as mod from 'mod'; Reflect.set(obj, key, mod);",
83 "import * as mod from 'mod'; { var Object; Object.assign(mod, obj); }",
84 "import * as mod from 'mod'; var Object; Object.assign(mod, obj);",
85 "import * as mod from 'mod'; Object.seal(mod, obj)",
86 "import * as mod from 'mod'; Object.preventExtensions(mod)",
87 "import * as mod from 'mod'; Reflect.preventExtensions(mod)"
88 ],
89 invalid: [
90 {
91 code: "import mod1 from 'mod'; mod1 = 0",
92 errors: [{ messageId: "readonly", data: { name: "mod1" }, column: 25 }]
93 },
94 {
95 code: "import mod2 from 'mod'; mod2 += 0",
96 errors: [{ messageId: "readonly", data: { name: "mod2" }, column: 25 }]
97 },
98 {
99 code: "import mod3 from 'mod'; mod3++",
100 errors: [{ messageId: "readonly", data: { name: "mod3" }, column: 25 }]
101 },
102 {
103 code: "import mod4 from 'mod'; for (mod4 in foo);",
104 errors: [{ messageId: "readonly", data: { name: "mod4" }, column: 25 }]
105 },
106 {
107 code: "import mod5 from 'mod'; for (mod5 of foo);",
108 errors: [{ messageId: "readonly", data: { name: "mod5" }, column: 25 }]
109 },
110 {
111 code: "import mod6 from 'mod'; [mod6] = foo",
112 errors: [{ messageId: "readonly", data: { name: "mod6" }, column: 25 }]
113 },
114 {
115 code: "import mod7 from 'mod'; [mod7 = 0] = foo",
116 errors: [{ messageId: "readonly", data: { name: "mod7" }, column: 25 }]
117 },
118 {
119 code: "import mod8 from 'mod'; [...mod8] = foo",
120 errors: [{ messageId: "readonly", data: { name: "mod8" }, column: 25 }]
121 },
122 {
123 code: "import mod9 from 'mod'; ({ bar: mod9 } = foo)",
124 errors: [{ messageId: "readonly", data: { name: "mod9" }, column: 26 }]
125 },
126 {
127 code: "import mod10 from 'mod'; ({ bar: mod10 = 0 } = foo)",
128 errors: [{ messageId: "readonly", data: { name: "mod10" }, column: 27 }]
129 },
130 {
131 code: "import mod11 from 'mod'; ({ ...mod11 } = foo)",
132 errors: [{ messageId: "readonly", data: { name: "mod11" }, column: 27 }]
133 },
134 {
135 code: "import {named1} from 'mod'; named1 = 0",
136 errors: [{ messageId: "readonly", data: { name: "named1" }, column: 29 }]
137 },
138 {
139 code: "import {named2} from 'mod'; named2 += 0",
140 errors: [{ messageId: "readonly", data: { name: "named2" }, column: 29 }]
141 },
142 {
143 code: "import {named3} from 'mod'; named3++",
144 errors: [{ messageId: "readonly", data: { name: "named3" }, column: 29 }]
145 },
146 {
147 code: "import {named4} from 'mod'; for (named4 in foo);",
148 errors: [{ messageId: "readonly", data: { name: "named4" }, column: 29 }]
149 },
150 {
151 code: "import {named5} from 'mod'; for (named5 of foo);",
152 errors: [{ messageId: "readonly", data: { name: "named5" }, column: 29 }]
153 },
154 {
155 code: "import {named6} from 'mod'; [named6] = foo",
156 errors: [{ messageId: "readonly", data: { name: "named6" }, column: 29 }]
157 },
158 {
159 code: "import {named7} from 'mod'; [named7 = 0] = foo",
160 errors: [{ messageId: "readonly", data: { name: "named7" }, column: 29 }]
161 },
162 {
163 code: "import {named8} from 'mod'; [...named8] = foo",
164 errors: [{ messageId: "readonly", data: { name: "named8" }, column: 29 }]
165 },
166 {
167 code: "import {named9} from 'mod'; ({ bar: named9 } = foo)",
168 errors: [{ messageId: "readonly", data: { name: "named9" }, column: 30 }]
169 },
170 {
171 code: "import {named10} from 'mod'; ({ bar: named10 = 0 } = foo)",
172 errors: [{ messageId: "readonly", data: { name: "named10" }, column: 31 }]
173 },
174 {
175 code: "import {named11} from 'mod'; ({ ...named11 } = foo)",
176 errors: [{ messageId: "readonly", data: { name: "named11" }, column: 31 }]
177 },
178 {
179 code: "import {named12 as foo} from 'mod'; foo = 0; named12 = 0",
180 errors: [{ messageId: "readonly", data: { name: "foo" }, column: 37 }]
181 },
182 {
183 code: "import * as mod1 from 'mod'; mod1 = 0",
184 errors: [{ messageId: "readonly", data: { name: "mod1" }, column: 30 }]
185 },
186 {
187 code: "import * as mod2 from 'mod'; mod2 += 0",
188 errors: [{ messageId: "readonly", data: { name: "mod2" }, column: 30 }]
189 },
190 {
191 code: "import * as mod3 from 'mod'; mod3++",
192 errors: [{ messageId: "readonly", data: { name: "mod3" }, column: 30 }]
193 },
194 {
195 code: "import * as mod4 from 'mod'; for (mod4 in foo);",
196 errors: [{ messageId: "readonly", data: { name: "mod4" }, column: 30 }]
197 },
198 {
199 code: "import * as mod5 from 'mod'; for (mod5 of foo);",
200 errors: [{ messageId: "readonly", data: { name: "mod5" }, column: 30 }]
201 },
202 {
203 code: "import * as mod6 from 'mod'; [mod6] = foo",
204 errors: [{ messageId: "readonly", data: { name: "mod6" }, column: 30 }]
205 },
206 {
207 code: "import * as mod7 from 'mod'; [mod7 = 0] = foo",
208 errors: [{ messageId: "readonly", data: { name: "mod7" }, column: 30 }]
209 },
210 {
211 code: "import * as mod8 from 'mod'; [...mod8] = foo",
212 errors: [{ messageId: "readonly", data: { name: "mod8" }, column: 30 }]
213 },
214 {
215 code: "import * as mod9 from 'mod'; ({ bar: mod9 } = foo)",
216 errors: [{ messageId: "readonly", data: { name: "mod9" }, column: 31 }]
217 },
218 {
219 code: "import * as mod10 from 'mod'; ({ bar: mod10 = 0 } = foo)",
220 errors: [{ messageId: "readonly", data: { name: "mod10" }, column: 32 }]
221 },
222 {
223 code: "import * as mod11 from 'mod'; ({ ...mod11 } = foo)",
224 errors: [{ messageId: "readonly", data: { name: "mod11" }, column: 32 }]
225 },
226 {
227 code: "import * as mod1 from 'mod'; mod1.named = 0",
228 errors: [{ messageId: "readonlyMember", data: { name: "mod1" }, column: 30 }]
229 },
230 {
231 code: "import * as mod2 from 'mod'; mod2.named += 0",
232 errors: [{ messageId: "readonlyMember", data: { name: "mod2" }, column: 30 }]
233 },
234 {
235 code: "import * as mod3 from 'mod'; mod3.named++",
236 errors: [{ messageId: "readonlyMember", data: { name: "mod3" }, column: 30 }]
237 },
238 {
239 code: "import * as mod4 from 'mod'; for (mod4.named in foo);",
240 errors: [{ messageId: "readonlyMember", data: { name: "mod4" }, column: 30 }]
241 },
242 {
243 code: "import * as mod5 from 'mod'; for (mod5.named of foo);",
244 errors: [{ messageId: "readonlyMember", data: { name: "mod5" }, column: 30 }]
245 },
246 {
247 code: "import * as mod6 from 'mod'; [mod6.named] = foo",
248 errors: [{ messageId: "readonlyMember", data: { name: "mod6" }, column: 30 }]
249 },
250 {
251 code: "import * as mod7 from 'mod'; [mod7.named = 0] = foo",
252 errors: [{ messageId: "readonlyMember", data: { name: "mod7" }, column: 30 }]
253 },
254 {
255 code: "import * as mod8 from 'mod'; [...mod8.named] = foo",
256 errors: [{ messageId: "readonlyMember", data: { name: "mod8" }, column: 30 }]
257 },
258 {
259 code: "import * as mod9 from 'mod'; ({ bar: mod9.named } = foo)",
260 errors: [{ messageId: "readonlyMember", data: { name: "mod9" }, column: 31 }]
261 },
262 {
263 code: "import * as mod10 from 'mod'; ({ bar: mod10.named = 0 } = foo)",
264 errors: [{ messageId: "readonlyMember", data: { name: "mod10" }, column: 32 }]
265 },
266 {
267 code: "import * as mod11 from 'mod'; ({ ...mod11.named } = foo)",
268 errors: [{ messageId: "readonlyMember", data: { name: "mod11" }, column: 32 }]
269 },
270 {
271 code: "import * as mod12 from 'mod'; delete mod12.named",
272 errors: [{ messageId: "readonlyMember", data: { name: "mod12" }, column: 31 }]
273 },
274 {
275 code: "import * as mod from 'mod'; Object.assign(mod, obj)",
276 errors: [{ messageId: "readonlyMember", data: { name: "mod" }, column: 29 }]
277 },
278 {
279 code: "import * as mod from 'mod'; Object.defineProperty(mod, key, d)",
280 errors: [{ messageId: "readonlyMember", data: { name: "mod" }, column: 29 }]
281 },
282 {
283 code: "import * as mod from 'mod'; Object.defineProperties(mod, d)",
284 errors: [{ messageId: "readonlyMember", data: { name: "mod" }, column: 29 }]
285 },
286 {
287 code: "import * as mod from 'mod'; Object.setPrototypeOf(mod, proto)",
288 errors: [{ messageId: "readonlyMember", data: { name: "mod" }, column: 29 }]
289 },
290 {
291 code: "import * as mod from 'mod'; Object.freeze(mod)",
292 errors: [{ messageId: "readonlyMember", data: { name: "mod" }, column: 29 }]
293 },
294 {
295 code: "import * as mod from 'mod'; Reflect.defineProperty(mod, key, d)",
296 errors: [{ messageId: "readonlyMember", data: { name: "mod" }, column: 29 }]
297 },
298 {
299 code: "import * as mod from 'mod'; Reflect.deleteProperty(mod, key)",
300 errors: [{ messageId: "readonlyMember", data: { name: "mod" }, column: 29 }]
301 },
302 {
303 code: "import * as mod from 'mod'; Reflect.set(mod, key, value)",
304 errors: [{ messageId: "readonlyMember", data: { name: "mod" }, column: 29 }]
305 },
306 {
307 code: "import * as mod from 'mod'; Reflect.setPrototypeOf(mod, proto)",
308 errors: [{ messageId: "readonlyMember", data: { name: "mod" }, column: 29 }]
309 },
310 {
311 code: "import mod, * as mod_ns from 'mod'; mod.prop = 0; mod_ns.prop = 0",
312 errors: [{ messageId: "readonlyMember", data: { name: "mod_ns" }, column: 51 }]
313 }
314 ]
315 });