Skip to content
Permalink
Browse files

Fix: avoid creating invalid regex in no-warning-comments (fixes #11471)…

… (#11472)

5018378 changed the codebase to use unicode regexes almost everywhere, with the exception of places where regexes are constructed from user input. However, two issues occurred to cause a bug:

* Due to an oversight, the regular expressions constructed in the `no-warning-comments` rule were changed to be unicode regexes even though those regexes were constructed from user input.
* The `no-warning-comments` rule dynamically creates regexes with unnecessary escape characters, and unnecessary escape characters are invalid in unicode regexes.

This commit fixes the first issue. The second issue isn't a problem on its own, but it will need to be fixed in order to implement #11423.
  • Loading branch information...
not-an-aardvark committed Mar 5, 2019
1 parent b00a5e9 commit 458053b0b541f857bf233dacbde5ba80681820f8
Showing with 4 additions and 3 deletions.
  1. +2 −2 lib/rules/no-warning-comments.js
  2. +2 −1 tests/lib/rules/no-warning-comments.js
@@ -95,15 +95,15 @@ module.exports = {
* ^\s*TERM\b. This checks the word boundary
* at the beginning of the comment.
*/
return new RegExp(prefix + escaped + suffix, "iu");
return new RegExp(prefix + escaped + suffix, "i"); // eslint-disable-line require-unicode-regexp
}

/*
* For location "anywhere" the regex should be
* \bTERM\b|\bTERM\b, this checks the entire comment
* for the term.
*/
return new RegExp(prefix + escaped + suffix + eitherOrWordBoundary + term + wordBoundary, "iu");
return new RegExp(prefix + escaped + suffix + eitherOrWordBoundary + term + wordBoundary, "i"); // eslint-disable-line require-unicode-regexp
}

const warningRegExps = warningTerms.map(convertToRegExp);
@@ -36,7 +36,8 @@ ruleTester.run("no-warning-comments", rule, {
{ code: "// comments containing terms as substrings like TodoMVC", options: [{ terms: ["todo"], location: "anywhere" }] },
{ code: "// special regex characters don't cause problems", options: [{ terms: ["[aeiou]"], location: "anywhere" }] },
"/*eslint no-warning-comments: [2, { \"terms\": [\"todo\", \"fixme\", \"any other term\"], \"location\": \"anywhere\" }]*/\n\nvar x = 10;\n",
{ code: "/*eslint no-warning-comments: [2, { \"terms\": [\"todo\", \"fixme\", \"any other term\"], \"location\": \"anywhere\" }]*/\n\nvar x = 10;\n", options: [{ location: "anywhere" }] }
{ code: "/*eslint no-warning-comments: [2, { \"terms\": [\"todo\", \"fixme\", \"any other term\"], \"location\": \"anywhere\" }]*/\n\nvar x = 10;\n", options: [{ location: "anywhere" }] },
{ code: "foo", options: [{ terms: ["foo-bar"] }] }
],
invalid: [
{ code: "// fixme", errors: [{ message: "Unexpected 'fixme' comment." }] },

0 comments on commit 458053b

Please sign in to comment.
You can’t perform that action at this time.