]>
git.proxmox.com Git - pve-eslint.git/blob - eslint/tests/lib/rules/no-irregular-whitespace.js
7852d5e5c27d2bd94fae594703b14a8bdf0af5eb
2 * @fileoverview Tests for no-irregular-whitespace rule.
3 * @author Jonathan Kingston
8 //------------------------------------------------------------------------------
10 //------------------------------------------------------------------------------
12 const rule
= require("../../../lib/rules/no-irregular-whitespace"),
13 { RuleTester
} = require("../../../lib/rule-tester");
15 //------------------------------------------------------------------------------
17 //------------------------------------------------------------------------------
19 const ruleTester
= new RuleTester();
21 const expectedErrors
= [{
22 messageId
: "noIrregularWhitespace",
25 const expectedCommentErrors
= [{
26 messageId
: "noIrregularWhitespace",
32 ruleTester
.run("no-irregular-whitespace", rule
, {
75 "'\\\u2028';", // multiline string
76 "'\\\u2029';", // multiline string
80 { code
: "// \u000B", options
: [{ skipComments
: true }] },
81 { code
: "// \u000C", options
: [{ skipComments
: true }] },
82 { code
: "// \u0085", options
: [{ skipComments
: true }] },
83 { code
: "// \u00A0", options
: [{ skipComments
: true }] },
84 { code
: "// \u180E", options
: [{ skipComments
: true }] },
85 { code
: "// \ufeff", options
: [{ skipComments
: true }] },
86 { code
: "// \u2000", options
: [{ skipComments
: true }] },
87 { code
: "// \u2001", options
: [{ skipComments
: true }] },
88 { code
: "// \u2002", options
: [{ skipComments
: true }] },
89 { code
: "// \u2003", options
: [{ skipComments
: true }] },
90 { code
: "// \u2004", options
: [{ skipComments
: true }] },
91 { code
: "// \u2005", options
: [{ skipComments
: true }] },
92 { code
: "// \u2006", options
: [{ skipComments
: true }] },
93 { code
: "// \u2007", options
: [{ skipComments
: true }] },
94 { code
: "// \u2008", options
: [{ skipComments
: true }] },
95 { code
: "// \u2009", options
: [{ skipComments
: true }] },
96 { code
: "// \u200A", options
: [{ skipComments
: true }] },
97 { code
: "// \u200B", options
: [{ skipComments
: true }] },
98 { code
: "// \u202F", options
: [{ skipComments
: true }] },
99 { code
: "// \u205f", options
: [{ skipComments
: true }] },
100 { code
: "// \u3000", options
: [{ skipComments
: true }] },
101 { code
: "/* \u000B */", options
: [{ skipComments
: true }] },
102 { code
: "/* \u000C */", options
: [{ skipComments
: true }] },
103 { code
: "/* \u0085 */", options
: [{ skipComments
: true }] },
104 { code
: "/* \u00A0 */", options
: [{ skipComments
: true }] },
105 { code
: "/* \u180E */", options
: [{ skipComments
: true }] },
106 { code
: "/* \ufeff */", options
: [{ skipComments
: true }] },
107 { code
: "/* \u2000 */", options
: [{ skipComments
: true }] },
108 { code
: "/* \u2001 */", options
: [{ skipComments
: true }] },
109 { code
: "/* \u2002 */", options
: [{ skipComments
: true }] },
110 { code
: "/* \u2003 */", options
: [{ skipComments
: true }] },
111 { code
: "/* \u2004 */", options
: [{ skipComments
: true }] },
112 { code
: "/* \u2005 */", options
: [{ skipComments
: true }] },
113 { code
: "/* \u2006 */", options
: [{ skipComments
: true }] },
114 { code
: "/* \u2007 */", options
: [{ skipComments
: true }] },
115 { code
: "/* \u2008 */", options
: [{ skipComments
: true }] },
116 { code
: "/* \u2009 */", options
: [{ skipComments
: true }] },
117 { code
: "/* \u200A */", options
: [{ skipComments
: true }] },
118 { code
: "/* \u200B */", options
: [{ skipComments
: true }] },
119 { code
: "/* \u2028 */", options
: [{ skipComments
: true }] },
120 { code
: "/* \u2029 */", options
: [{ skipComments
: true }] },
121 { code
: "/* \u202F */", options
: [{ skipComments
: true }] },
122 { code
: "/* \u205f */", options
: [{ skipComments
: true }] },
123 { code
: "/* \u3000 */", options
: [{ skipComments
: true }] },
124 { code
: "/\u000B/", options
: [{ skipRegExps
: true }] },
125 { code
: "/\u000C/", options
: [{ skipRegExps
: true }] },
126 { code
: "/\u0085/", options
: [{ skipRegExps
: true }] },
127 { code
: "/\u00A0/", options
: [{ skipRegExps
: true }] },
128 { code
: "/\u180E/", options
: [{ skipRegExps
: true }] },
129 { code
: "/\ufeff/", options
: [{ skipRegExps
: true }] },
130 { code
: "/\u2000/", options
: [{ skipRegExps
: true }] },
131 { code
: "/\u2001/", options
: [{ skipRegExps
: true }] },
132 { code
: "/\u2002/", options
: [{ skipRegExps
: true }] },
133 { code
: "/\u2003/", options
: [{ skipRegExps
: true }] },
134 { code
: "/\u2004/", options
: [{ skipRegExps
: true }] },
135 { code
: "/\u2005/", options
: [{ skipRegExps
: true }] },
136 { code
: "/\u2006/", options
: [{ skipRegExps
: true }] },
137 { code
: "/\u2007/", options
: [{ skipRegExps
: true }] },
138 { code
: "/\u2008/", options
: [{ skipRegExps
: true }] },
139 { code
: "/\u2009/", options
: [{ skipRegExps
: true }] },
140 { code
: "/\u200A/", options
: [{ skipRegExps
: true }] },
141 { code
: "/\u200B/", options
: [{ skipRegExps
: true }] },
142 { code
: "/\u202F/", options
: [{ skipRegExps
: true }] },
143 { code
: "/\u205f/", options
: [{ skipRegExps
: true }] },
144 { code
: "/\u3000/", options
: [{ skipRegExps
: true }] },
145 { code
: "`\u000B`", options
: [{ skipTemplates
: true }], parserOptions
: { ecmaVersion
: 6 } },
146 { code
: "`\u000C`", options
: [{ skipTemplates
: true }], parserOptions
: { ecmaVersion
: 6 } },
147 { code
: "`\u0085`", options
: [{ skipTemplates
: true }], parserOptions
: { ecmaVersion
: 6 } },
148 { code
: "`\u00A0`", options
: [{ skipTemplates
: true }], parserOptions
: { ecmaVersion
: 6 } },
149 { code
: "`\u180E`", options
: [{ skipTemplates
: true }], parserOptions
: { ecmaVersion
: 6 } },
150 { code
: "`\ufeff`", options
: [{ skipTemplates
: true }], parserOptions
: { ecmaVersion
: 6 } },
151 { code
: "`\u2000`", options
: [{ skipTemplates
: true }], parserOptions
: { ecmaVersion
: 6 } },
152 { code
: "`\u2001`", options
: [{ skipTemplates
: true }], parserOptions
: { ecmaVersion
: 6 } },
153 { code
: "`\u2002`", options
: [{ skipTemplates
: true }], parserOptions
: { ecmaVersion
: 6 } },
154 { code
: "`\u2003`", options
: [{ skipTemplates
: true }], parserOptions
: { ecmaVersion
: 6 } },
155 { code
: "`\u2004`", options
: [{ skipTemplates
: true }], parserOptions
: { ecmaVersion
: 6 } },
156 { code
: "`\u2005`", options
: [{ skipTemplates
: true }], parserOptions
: { ecmaVersion
: 6 } },
157 { code
: "`\u2006`", options
: [{ skipTemplates
: true }], parserOptions
: { ecmaVersion
: 6 } },
158 { code
: "`\u2007`", options
: [{ skipTemplates
: true }], parserOptions
: { ecmaVersion
: 6 } },
159 { code
: "`\u2008`", options
: [{ skipTemplates
: true }], parserOptions
: { ecmaVersion
: 6 } },
160 { code
: "`\u2009`", options
: [{ skipTemplates
: true }], parserOptions
: { ecmaVersion
: 6 } },
161 { code
: "`\u200A`", options
: [{ skipTemplates
: true }], parserOptions
: { ecmaVersion
: 6 } },
162 { code
: "`\u200B`", options
: [{ skipTemplates
: true }], parserOptions
: { ecmaVersion
: 6 } },
163 { code
: "`\u202F`", options
: [{ skipTemplates
: true }], parserOptions
: { ecmaVersion
: 6 } },
164 { code
: "`\u205f`", options
: [{ skipTemplates
: true }], parserOptions
: { ecmaVersion
: 6 } },
165 { code
: "`\u3000`", options
: [{ skipTemplates
: true }], parserOptions
: { ecmaVersion
: 6 } },
168 "\uFEFFconsole.log('hello BOM');"
173 code
: "var any \u000B = 'thing';",
174 errors
: expectedErrors
177 code
: "var any \u000C = 'thing';",
178 errors
: expectedErrors
181 code
: "var any \u00A0 = 'thing';",
182 errors
: expectedErrors
186 * it was moved out of General_Category=Zs (separator, space) in Unicode 6.3.0, so should not be considered a whitespace character.
187 * https://codeblog.jonskeet.uk/2014/12/01/when-is-an-identifier-not-an-identifier-attack-of-the-mongolian-vowel-separator/
189 * code: "var any \u180E = 'thing';",
190 * errors: expectedErrors
194 code
: "var any \ufeff = 'thing';",
195 errors
: expectedErrors
198 code
: "var any \u2000 = 'thing';",
199 errors
: expectedErrors
202 code
: "var any \u2001 = 'thing';",
203 errors
: expectedErrors
206 code
: "var any \u2002 = 'thing';",
207 errors
: expectedErrors
210 code
: "var any \u2003 = 'thing';",
211 errors
: expectedErrors
214 code
: "var any \u2004 = 'thing';",
215 errors
: expectedErrors
218 code
: "var any \u2005 = 'thing';",
219 errors
: expectedErrors
222 code
: "var any \u2006 = 'thing';",
223 errors
: expectedErrors
226 code
: "var any \u2007 = 'thing';",
227 errors
: expectedErrors
230 code
: "var any \u2008 = 'thing';",
231 errors
: expectedErrors
234 code
: "var any \u2009 = 'thing';",
235 errors
: expectedErrors
238 code
: "var any \u200A = 'thing';",
239 errors
: expectedErrors
242 code
: "var any \u2028 = 'thing';",
243 errors
: expectedErrors
246 code
: "var any \u2029 = 'thing';",
247 errors
: expectedErrors
250 code
: "var any \u202F = 'thing';",
251 errors
: expectedErrors
254 code
: "var any \u205f = 'thing';",
255 errors
: expectedErrors
258 code
: "var any \u3000 = 'thing';",
259 errors
: expectedErrors
262 code
: "var a = 'b',\u2028c = 'd',\ne = 'f'\u2028",
265 messageId
: "noIrregularWhitespace",
271 messageId
: "noIrregularWhitespace",
279 code
: "var any \u3000 = 'thing', other \u3000 = 'thing';\nvar third \u3000 = 'thing';",
282 messageId
: "noIrregularWhitespace",
288 messageId
: "noIrregularWhitespace",
294 messageId
: "noIrregularWhitespace",
303 errors
: expectedCommentErrors
307 errors
: expectedCommentErrors
311 errors
: expectedCommentErrors
315 errors
: expectedCommentErrors
319 errors
: expectedCommentErrors
323 errors
: expectedCommentErrors
327 errors
: expectedCommentErrors
331 errors
: expectedCommentErrors
335 errors
: expectedCommentErrors
339 errors
: expectedCommentErrors
343 errors
: expectedCommentErrors
347 errors
: expectedCommentErrors
351 errors
: expectedCommentErrors
355 errors
: expectedCommentErrors
359 errors
: expectedCommentErrors
363 errors
: expectedCommentErrors
367 errors
: expectedCommentErrors
371 errors
: expectedCommentErrors
375 errors
: expectedCommentErrors
379 errors
: expectedCommentErrors
383 errors
: expectedCommentErrors
386 code
: "/* \u000B */",
387 errors
: expectedCommentErrors
390 code
: "/* \u000C */",
391 errors
: expectedCommentErrors
394 code
: "/* \u0085 */",
395 errors
: expectedCommentErrors
398 code
: "/* \u00A0 */",
399 errors
: expectedCommentErrors
402 code
: "/* \u180E */",
403 errors
: expectedCommentErrors
406 code
: "/* \ufeff */",
407 errors
: expectedCommentErrors
410 code
: "/* \u2000 */",
411 errors
: expectedCommentErrors
414 code
: "/* \u2001 */",
415 errors
: expectedCommentErrors
418 code
: "/* \u2002 */",
419 errors
: expectedCommentErrors
422 code
: "/* \u2003 */",
423 errors
: expectedCommentErrors
426 code
: "/* \u2004 */",
427 errors
: expectedCommentErrors
430 code
: "/* \u2005 */",
431 errors
: expectedCommentErrors
434 code
: "/* \u2006 */",
435 errors
: expectedCommentErrors
438 code
: "/* \u2007 */",
439 errors
: expectedCommentErrors
442 code
: "/* \u2008 */",
443 errors
: expectedCommentErrors
446 code
: "/* \u2009 */",
447 errors
: expectedCommentErrors
450 code
: "/* \u200A */",
451 errors
: expectedCommentErrors
454 code
: "/* \u200B */",
455 errors
: expectedCommentErrors
458 code
: "/* \u2028 */",
459 errors
: expectedCommentErrors
462 code
: "/* \u2029 */",
463 errors
: expectedCommentErrors
466 code
: "/* \u202F */",
467 errors
: expectedCommentErrors
470 code
: "/* \u205f */",
471 errors
: expectedCommentErrors
474 code
: "/* \u3000 */",
475 errors
: expectedCommentErrors
478 code
: "var any = /\u3000/, other = /\u000B/;",
481 messageId
: "noIrregularWhitespace",
487 messageId
: "noIrregularWhitespace",
495 code
: "var any = '\u3000', other = '\u000B';",
496 options
: [{ skipStrings
: false }],
499 messageId
: "noIrregularWhitespace",
505 messageId
: "noIrregularWhitespace",
513 code
: "var any = `\u3000`, other = `\u000B`;",
514 options
: [{ skipTemplates
: false }],
515 parserOptions
: { ecmaVersion
: 6 },
518 messageId
: "noIrregularWhitespace",
524 messageId
: "noIrregularWhitespace",
532 code
: "`something ${\u3000 10} another thing`",
533 options
: [{ skipTemplates
: true }],
534 parserOptions
: { ecmaVersion
: 6 },
537 messageId
: "noIrregularWhitespace",