Skip to content

Commit 2332262

Browse files
authored
fix: error location should not modify error message in RuleTester (#20421)
1 parent f658419 commit 2332262

2 files changed

Lines changed: 54 additions & 4 deletions

File tree

lib/rule-tester/rule-tester.js

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1708,7 +1708,7 @@ class RuleTester {
17081708
error.scenarioType = "valid";
17091709
error.scenarioIndex = index;
17101710
error.stack = error.stack.replace(
1711-
/ +at /u,
1711+
/^ +at /mu,
17121712
[
17131713
` at RuleTester.run.valid[${index}]`,
17141714
` at RuleTester.run.valid`,
@@ -1750,7 +1750,7 @@ class RuleTester {
17501750
error.scenarioIndex = index;
17511751
const errorIndex = error.errorIndex;
17521752
error.stack = error.stack.replace(
1753-
/ +at /u,
1753+
/^ +at /mu,
17541754
[
17551755
...(typeof errorIndex ===
17561756
"number"

tests/lib/rule-tester/rule-tester.js

Lines changed: 52 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -6213,7 +6213,7 @@ describe("RuleTester", () => {
62136213
} catch (error) {
62146214
const normalizedStack = normalizeStack(error);
62156215
assert.include(normalizedStack, "at RuleTester.run.valid[0]");
6216-
assert.include(normalizedStack, "at RuleTester.run.valid");
6216+
assert.include(normalizedStack, "at RuleTester.run.valid\n");
62176217
assert.include(
62186218
normalizedStack,
62196219
"at RuleTester.run (tests/lib/rule-tester/rule-tester.js:<lines>)",
@@ -6251,7 +6251,57 @@ describe("RuleTester", () => {
62516251
"at RuleTester.run.invalid[0].error[1]",
62526252
);
62536253
assert.include(normalizedStack, "at RuleTester.run.invalid[0]");
6254-
assert.include(normalizedStack, "at RuleTester.run.invalid");
6254+
assert.include(normalizedStack, "at RuleTester.run.invalid\n");
6255+
assert.include(
6256+
normalizedStack,
6257+
"at RuleTester.run (tests/lib/rule-tester/rule-tester.js:<lines>)",
6258+
);
6259+
}
6260+
});
6261+
6262+
it("should report the correct location for errors in invalid test cases when a suggestion assertion fails", () => {
6263+
try {
6264+
ruleTester.run(
6265+
"suggestions-basic",
6266+
require("../../fixtures/testers/rule-tester/suggestions")
6267+
.basic,
6268+
{
6269+
valid: ["var boo;"],
6270+
invalid: [
6271+
{
6272+
code: "var foo;",
6273+
errors: [
6274+
{
6275+
message:
6276+
"Avoid using identifiers named 'foo'.",
6277+
suggestions: [
6278+
{
6279+
desc: "Rename identifier 'foo' to 'bar'",
6280+
output: "var baz;", // wrong output
6281+
},
6282+
],
6283+
},
6284+
],
6285+
},
6286+
],
6287+
},
6288+
);
6289+
assert.fail("Expected an error to be thrown");
6290+
} catch (error) {
6291+
const normalizedStack = normalizeStack(error);
6292+
6293+
// The error message should not be modified although it contains "at"
6294+
assert.include(
6295+
normalizedStack,
6296+
"Expected the applied suggestion fix to match the test suggestion output for suggestion at index: 0",
6297+
);
6298+
6299+
assert.include(
6300+
normalizedStack,
6301+
"at RuleTester.run.invalid[0].error[0]",
6302+
);
6303+
assert.include(normalizedStack, "at RuleTester.run.invalid[0]");
6304+
assert.include(normalizedStack, "at RuleTester.run.invalid\n");
62556305
assert.include(
62566306
normalizedStack,
62576307
"at RuleTester.run (tests/lib/rule-tester/rule-tester.js:<lines>)",

0 commit comments

Comments
 (0)