diff --git a/lib/rule-tester/rule-tester.js b/lib/rule-tester/rule-tester.js index 9f5576fa452..2f8bc6d2601 100644 --- a/lib/rule-tester/rule-tester.js +++ b/lib/rule-tester/rule-tester.js @@ -655,6 +655,11 @@ class RuleTester { const messages = result.messages; if (typeof item.errors === "number") { + + if (item.errors === 0) { + assert.fail("errors of type `number` should not have value `0`"); + } + assert.strictEqual(messages.length, item.errors, util.format("Should have %d error%s but had %d: %s", item.errors, item.errors === 1 ? "" : "s", messages.length, util.inspect(messages))); } else { diff --git a/tests/lib/rule-tester/rule-tester.js b/tests/lib/rule-tester/rule-tester.js index 8bcda24aa17..f3d8932fb4e 100644 --- a/tests/lib/rule-tester/rule-tester.js +++ b/tests/lib/rule-tester/rule-tester.js @@ -475,6 +475,25 @@ describe("RuleTester", () => { }, /errors array should have at least one element otherwise its a valid case/u); }); + it("should throw error for errors : 0", () => { + assert.throws(() => { + ruleTester.run( + "suggestions-messageIds", + require("../../fixtures/testers/rule-tester/suggestions") + .withMessageIds, + { + valid: [], + invalid: [ + { + code: "var foo;", + errors: 0 + } + ] + } + ); + }, /errors of type `number` should not have value `0`/u); + }); + it("should not skip column assertion if column is a falsy value", () => { assert.throws(() => { ruleTester.run("no-eval", require("../../fixtures/testers/rule-tester/no-eval"), {