]> git.proxmox.com Git - pve-eslint.git/blame - eslint/tests/lib/rules/no-control-regex.js
import 8.23.1 source
[pve-eslint.git] / eslint / tests / lib / rules / no-control-regex.js
CommitLineData
eb39fafa
DC
1/**
2 * @fileoverview Tests for no-control-regex rule.
3 * @author Nicholas C. Zakas
4 */
5
6"use strict";
7
8//------------------------------------------------------------------------------
9// Requirements
10//------------------------------------------------------------------------------
11
12const rule = require("../../../lib/rules/no-control-regex"),
13 { RuleTester } = require("../../../lib/rule-tester");
14
15//------------------------------------------------------------------------------
16// Tests
17//------------------------------------------------------------------------------
18
19const ruleTester = new RuleTester();
20
21ruleTester.run("no-control-regex", rule, {
22 valid: [
23 "var regex = /x1f/",
24 String.raw`var regex = /\\x1f/`,
25 "var regex = new RegExp('x1f')",
26 "var regex = RegExp('x1f')",
27 "new RegExp('[')",
28 "RegExp('[')",
8f9d1d4d
DC
29 "new (function foo(){})('\\x1f')",
30 { code: String.raw`/\u{20}/u`, parserOptions: { ecmaVersion: 2015 } },
31 String.raw`/\u{1F}/`,
32 String.raw`/\u{1F}/g`,
33 String.raw`new RegExp("\\u{20}", "u")`,
34 String.raw`new RegExp("\\u{1F}")`,
35 String.raw`new RegExp("\\u{1F}", "g")`,
36 String.raw`new RegExp("\\u{1F}", flags)` // when flags are unknown, this rule assumes there's no `u` flag
eb39fafa
DC
37 ],
38 invalid: [
39 { code: String.raw`var regex = /\x1f/`, errors: [{ messageId: "unexpected", data: { controlChars: "\\x1f" }, type: "Literal" }] },
40 { code: String.raw`var regex = /\\\x1f\\x1e/`, errors: [{ messageId: "unexpected", data: { controlChars: "\\x1f" }, type: "Literal" }] },
41 { code: String.raw`var regex = /\\\x1fFOO\\x00/`, errors: [{ messageId: "unexpected", data: { controlChars: "\\x1f" }, type: "Literal" }] },
42 { code: String.raw`var regex = /FOO\\\x1fFOO\\x1f/`, errors: [{ messageId: "unexpected", data: { controlChars: "\\x1f" }, type: "Literal" }] },
43 { code: "var regex = new RegExp('\\x1f\\x1e')", errors: [{ messageId: "unexpected", data: { controlChars: "\\x1f, \\x1e" }, type: "Literal" }] },
44 { code: "var regex = new RegExp('\\x1fFOO\\x00')", errors: [{ messageId: "unexpected", data: { controlChars: "\\x1f, \\x00" }, type: "Literal" }] },
45 { code: "var regex = new RegExp('FOO\\x1fFOO\\x1f')", errors: [{ messageId: "unexpected", data: { controlChars: "\\x1f, \\x1f" }, type: "Literal" }] },
46 { code: "var regex = RegExp('\\x1f')", errors: [{ messageId: "unexpected", data: { controlChars: "\\x1f" }, type: "Literal" }] },
47 {
48 code: "var regex = /(?<a>\\x1f)/",
49 parserOptions: { ecmaVersion: 2018 },
50 errors: [{ messageId: "unexpected", data: { controlChars: "\\x1f" }, type: "Literal" }]
456be15e
TL
51 },
52 {
53 code: String.raw`var regex = /(?<\u{1d49c}>.)\x1f/`,
54 parserOptions: { ecmaVersion: 2020 },
55 errors: [{ messageId: "unexpected", data: { controlChars: "\\x1f" }, type: "Literal" }]
8f9d1d4d
DC
56 },
57 {
58 code: String.raw`new RegExp("\\u001F", flags)`,
59 errors: [{ messageId: "unexpected", data: { controlChars: "\\x1f" }, type: "Literal" }]
60 },
61 {
62 code: String.raw`/\u{1111}*\x1F/u`,
63 parserOptions: { ecmaVersion: 2015 },
64 errors: [{ messageId: "unexpected", data: { controlChars: "\\x1f" }, type: "Literal" }]
65 },
66 {
67 code: String.raw`new RegExp("\\u{1111}*\\x1F", "u")`,
68 parserOptions: { ecmaVersion: 2015 },
69 errors: [{ messageId: "unexpected", data: { controlChars: "\\x1f" }, type: "Literal" }]
70 },
71 {
72 code: String.raw`/\u{1F}/u`,
73 parserOptions: { ecmaVersion: 2015 },
74 errors: [{ messageId: "unexpected", data: { controlChars: "\\x1f" }, type: "Literal" }]
75 },
76 {
77 code: String.raw`/\u{1F}/gui`,
78 parserOptions: { ecmaVersion: 2015 },
79 errors: [{ messageId: "unexpected", data: { controlChars: "\\x1f" }, type: "Literal" }]
80 },
81 {
82 code: String.raw`new RegExp("\\u{1F}", "u")`,
83 errors: [{ messageId: "unexpected", data: { controlChars: "\\x1f" }, type: "Literal" }]
84 },
85 {
86 code: String.raw`new RegExp("\\u{1F}", "gui")`,
87 errors: [{ messageId: "unexpected", data: { controlChars: "\\x1f" }, type: "Literal" }]
eb39fafa
DC
88 }
89 ]
90});