]>
git.proxmox.com Git - pve-eslint.git/blob - eslint/tests/lib/rules/no-redeclare.js
f89d6853fa3197886b3a40e0b227bf9675ff4f0f
2 * @fileoverview Tests for no-redeclare rule.
8 //------------------------------------------------------------------------------
10 //------------------------------------------------------------------------------
12 const rule
= require ( "../../../lib/rules/no-redeclare" );
13 const { RuleTester
} = require ( "../../../lib/rule-tester" );
15 //------------------------------------------------------------------------------
17 //------------------------------------------------------------------------------
19 const ruleTester
= new RuleTester ();
21 ruleTester
. run ( "no-redeclare" , rule
, {
23 "var a = 3; var b = function() { var a = 10; };" ,
26 code
: "if (true) { \n let b = 2; \n } else { \n let b = 3; \n }" ,
31 { code
: "var Object = 0;" , options
: [{ builtinGlobals
: false }] },
32 { code
: "var Object = 0;" , options
: [{ builtinGlobals
: true }], parserOptions
: { ecmaVersion
: 6 , sourceType
: "module" } },
33 { code
: "var Object = 0;" , options
: [{ builtinGlobals
: true }], parserOptions
: { ecmaFeatures
: { globalReturn
: true } } },
34 { code
: "var top = 0;" , options
: [{ builtinGlobals
: true }] },
35 { code
: "var top = 0;" , options
: [{ builtinGlobals
: true }], parserOptions
: { ecmaFeatures
: { globalReturn
: true } }, env
: { browser
: true } },
36 { code
: "var top = 0;" , options
: [{ builtinGlobals
: true }], parserOptions
: { ecmaVersion
: 6 , sourceType
: "module" }, env
: { browser
: true } },
39 options
: [{ builtinGlobals
: true }],
40 env
: { browser
: false }
42 { code
: "var glovalThis = foo" , options
: [{ builtinGlobals
: true }], env
: { es6
: true } },
43 { code
: "var glovalThis = foo" , options
: [{ builtinGlobals
: true }], env
: { es2017
: true } },
45 // Comments and built-ins.
47 code
: "/*globals Array */" ,
48 options
: [{ builtinGlobals
: false }]
51 code
: "/*globals a */" ,
52 options
: [{ builtinGlobals
: false }],
53 globals
: { a
: "readonly" }
56 code
: "/*globals a */" ,
57 options
: [{ builtinGlobals
: false }],
58 globals
: { a
: "writable" }
61 code
: "/*globals a:off */" ,
62 options
: [{ builtinGlobals
: true }],
63 globals
: { a
: "readonly" }
66 code
: "/*globals a */" ,
67 options
: [{ builtinGlobals
: true }],
72 { code
: "var a = 3; var a = 10;" , parserOptions
: { ecmaVersion
: 6 }, errors
: [{ message
: "'a' is already defined." , type
: "Identifier" }] },
73 { code
: "switch(foo) { case a: var b = 3; \n case b: var b = 4}" , errors
: [{ message
: "'b' is already defined." , type
: "Identifier" }] },
74 { code
: "var a = 3; var a = 10;" , errors
: [{ message
: "'a' is already defined." , type
: "Identifier" }] },
75 { code
: "var a = {}; var a = [];" , errors
: [{ message
: "'a' is already defined." , type
: "Identifier" }] },
76 { code
: "var a; function a() {}" , errors
: [{ message
: "'a' is already defined." , type
: "Identifier" }] },
77 { code
: "function a() {} function a() {}" , errors
: [{ message
: "'a' is already defined." , type
: "Identifier" }] },
78 { code
: "var a = function() { }; var a = function() { }" , errors
: [{ message
: "'a' is already defined." , type
: "Identifier" }] },
79 { code
: "var a = function() { }; var a = new Date();" , errors
: [{ message
: "'a' is already defined." , type
: "Identifier" }] },
80 { code
: "var a = 3; var a = 10; var a = 15;" , errors
: [{ message
: "'a' is already defined." , type
: "Identifier" }, { message
: "'a' is already defined." , type
: "Identifier" }] },
81 { code
: "var a; var a;" , parserOptions
: { ecmaVersion
: 6 , sourceType
: "module" }, errors
: [{ message
: "'a' is already defined." , type
: "Identifier" }] },
82 { code
: "export var a; var a;" , parserOptions
: { ecmaVersion
: 6 , sourceType
: "module" }, errors
: [{ message
: "'a' is already defined." , type
: "Identifier" }] },
84 code
: "var Object = 0;" ,
85 options
: [{ builtinGlobals
: true }],
86 errors
: [{ message
: "'Object' is already defined as a built-in global variable." , type
: "Identifier" }]
90 options
: [{ builtinGlobals
: true }],
91 env
: { browser
: true },
92 errors
: [{ message
: "'top' is already defined as a built-in global variable." , type
: "Identifier" }]
95 code
: "var a; var {a = 0, b: Object = 0} = {};" ,
96 options
: [{ builtinGlobals
: true }],
97 parserOptions
: { ecmaVersion
: 6 },
99 { message
: "'a' is already defined." , type
: "Identifier" },
100 { message
: "'Object' is already defined as a built-in global variable." , type
: "Identifier" }
104 code
: "var a; var {a = 0, b: Object = 0} = {};" ,
105 options
: [{ builtinGlobals
: true }],
106 parserOptions
: { ecmaVersion
: 6 , sourceType
: "module" },
108 { message
: "'a' is already defined." , type
: "Identifier" }
112 code
: "var a; var {a = 0, b: Object = 0} = {};" ,
113 options
: [{ builtinGlobals
: true }],
114 parserOptions
: { ecmaVersion
: 6 , ecmaFeatures
: { globalReturn
: true } },
116 { message
: "'a' is already defined." , type
: "Identifier" }
120 code
: "var a; var {a = 0, b: Object = 0} = {};" ,
121 options
: [{ builtinGlobals
: false }],
122 parserOptions
: { ecmaVersion
: 6 },
124 { message
: "'a' is already defined." , type
: "Identifier" }
128 code
: "var globalThis = 0;" ,
129 options
: [{ builtinGlobals
: true }],
130 env
: { es2020
: true },
131 errors
: [{ message
: "'globalThis' is already defined as a built-in global variable." , type
: "Identifier" }]
134 code
: "var a; var {a = 0, b: globalThis = 0} = {};" ,
135 options
: [{ builtinGlobals
: true }],
136 parserOptions
: { ecmaVersion
: 6 },
137 env
: { es2020
: true },
139 { message
: "'a' is already defined." , type
: "Identifier" },
140 { message
: "'globalThis' is already defined as a built-in global variable." , type
: "Identifier" }
144 code
: "/*global b:false*/ var b = 1;" ,
145 options
: [{ builtinGlobals
: true }],
147 message
: "'b' is already defined by a variable declaration." ,
156 code
: "/*global b:true*/ var b = 1;" ,
157 options
: [{ builtinGlobals
: true }],
159 message
: "'b' is already defined by a variable declaration." ,
168 code
: "function f() { var a; var a; }" ,
170 { message
: "'a' is already defined." , type
: "Identifier" }
174 code
: "function f(a) { var a; }" ,
176 { message
: "'a' is already defined." , type
: "Identifier" }
180 code
: "function f() { var a; if (test) { var a; } }" ,
182 { message
: "'a' is already defined." , type
: "Identifier" }
186 code
: "for (var a, a;;);" ,
188 { message
: "'a' is already defined." , type
: "Identifier" }
193 code
: "var Object = 0;" ,
195 { message
: "'Object' is already defined as a built-in global variable." , type
: "Identifier" }
199 code
: "var top = 0;" ,
200 env
: { browser
: true },
202 { message
: "'top' is already defined as a built-in global variable." , type
: "Identifier" }
206 // Comments and built-ins.
208 code
: "/*globals Array */" ,
209 options
: [{ builtinGlobals
: true }],
211 message
: "'Array' is already defined as a built-in global variable." ,
220 code
: "/*globals parseInt */" ,
221 options
: [{ builtinGlobals
: true }],
223 message
: "'parseInt' is already defined as a built-in global variable." ,
232 code
: "/*globals foo, Array */" ,
233 options
: [{ builtinGlobals
: true }],
235 message
: "'Array' is already defined as a built-in global variable." ,
244 code
: "/* globals foo, Array, baz */" ,
245 options
: [{ builtinGlobals
: true }],
247 message
: "'Array' is already defined as a built-in global variable." ,
256 code
: "/*global foo, Array, baz*/" ,
257 options
: [{ builtinGlobals
: true }],
259 message
: "'Array' is already defined as a built-in global variable." ,
268 code
: "/*global array, Array*/" ,
269 options
: [{ builtinGlobals
: true }],
271 message
: "'Array' is already defined as a built-in global variable." ,
280 code
: "/*globals a,Array*/" ,
281 options
: [{ builtinGlobals
: true }],
283 message
: "'Array' is already defined as a built-in global variable." ,
292 code
: "/*globals a:readonly, Array:writable */" ,
293 options
: [{ builtinGlobals
: true }],
295 message
: "'Array' is already defined as a built-in global variable." ,
304 code
: " \n /*globals Array */" ,
305 options
: [{ builtinGlobals
: true }],
307 message
: "'Array' is already defined as a built-in global variable." ,
316 code
: "/*globals \n Array */" ,
317 options
: [{ builtinGlobals
: true }],
319 message
: "'Array' is already defined as a built-in global variable." ,
328 code
: " \n /*globals \n\n Array*/" ,
329 options
: [{ builtinGlobals
: true }],
331 message
: "'Array' is already defined as a built-in global variable." ,
340 code
: "/*globals foo, \n Array */" ,
341 options
: [{ builtinGlobals
: true }],
343 message
: "'Array' is already defined as a built-in global variable." ,
352 code
: "/*globals a */" ,
353 options
: [{ builtinGlobals
: true }],
354 globals
: { a
: "readonly" },
356 message
: "'a' is already defined as a built-in global variable." ,
365 code
: "/*globals a */" ,
366 options
: [{ builtinGlobals
: true }],
367 globals
: { a
: "writable" },
369 message
: "'a' is already defined as a built-in global variable." ,
378 code
: "/*globals a */ /*globals a */" ,
380 message
: "'a' is already defined." ,
389 code
: "/*globals a */ /*globals a */ var a = 0" ,
390 options
: [{ builtinGlobals
: true }],
391 globals
: { a
: "writable" },
394 message
: "'a' is already defined as a built-in global variable." ,
402 message
: "'a' is already defined as a built-in global variable." ,
410 message
: "'a' is already defined as a built-in global variable." ,