From f9d757df5a70417e69b957f9c607cd890c6b71b7 Mon Sep 17 00:00:00 2001 From: Anix Date: Mon, 20 Apr 2020 07:48:28 +0000 Subject: [PATCH 1/6] Update: added empty error array check for false negative --- lib/rule-tester/rule-tester.js | 4 ++++ tests/lib/rule-tester/rule-tester.js | 15 ++++++++++++++- 2 files changed, 18 insertions(+), 1 deletion(-) diff --git a/lib/rule-tester/rule-tester.js b/lib/rule-tester/rule-tester.js index 77df1def893..0491e4f653e 100644 --- a/lib/rule-tester/rule-tester.js +++ b/lib/rule-tester/rule-tester.js @@ -644,6 +644,10 @@ class RuleTester { assert.ok(item.errors || item.errors === 0, `Did not specify errors for an invalid test of ${ruleName}`); + if (Array.isArray(item.errors) && item.errors.length === 0) { + assert.fail("errors array should have atleast one element otherwise its a valid case"); + } + const ruleHasMetaMessages = hasOwnProperty(rule, "meta") && hasOwnProperty(rule.meta, "messages"); const friendlyIDList = ruleHasMetaMessages ? `[${Object.keys(rule.meta.messages).map(key => `'${key}'`).join(", ")}]` : null; diff --git a/tests/lib/rule-tester/rule-tester.js b/tests/lib/rule-tester/rule-tester.js index fedc237d64c..eb5cd139592 100644 --- a/tests/lib/rule-tester/rule-tester.js +++ b/tests/lib/rule-tester/rule-tester.js @@ -463,6 +463,18 @@ describe("RuleTester", () => { }, expectedErrorMessage); }); + it("should throw error for empty error array", () => { + assert.throws(() => { + ruleTester.run("suggestions-messageIds", require("../../fixtures/testers/rule-tester/suggestions").withMessageIds, { + valid: [], + invalid: [{ + code: "var foo;", + errors: [] + }] + }); + }, /errors array should have atleast one element otherwise its a valid case/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"), { @@ -732,7 +744,7 @@ describe("RuleTester", () => { { code: "eval(foo)", parser: require.resolve("esprima"), - errors: [{}] + errors: [{ line: 1 }] } ] }); @@ -1893,4 +1905,5 @@ describe("RuleTester", () => { }); }); + }); From 3dad9405ddbb6af6546d64aa11b5d5145c36cd39 Mon Sep 17 00:00:00 2001 From: Anix Date: Tue, 21 Apr 2020 11:01:58 +0000 Subject: [PATCH 2/6] Chore: message refactore --- lib/rule-tester/rule-tester.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lib/rule-tester/rule-tester.js b/lib/rule-tester/rule-tester.js index 0491e4f653e..9f5576fa452 100644 --- a/lib/rule-tester/rule-tester.js +++ b/lib/rule-tester/rule-tester.js @@ -645,7 +645,7 @@ class RuleTester { `Did not specify errors for an invalid test of ${ruleName}`); if (Array.isArray(item.errors) && item.errors.length === 0) { - assert.fail("errors array should have atleast one element otherwise its a valid case"); + assert.fail("errors array should have at least one element otherwise its a valid case"); } const ruleHasMetaMessages = hasOwnProperty(rule, "meta") && hasOwnProperty(rule.meta, "messages"); From 08370d08790e4b8488c5f4e775631ea3ba15c914 Mon Sep 17 00:00:00 2001 From: Anix Date: Tue, 21 Apr 2020 13:36:31 +0000 Subject: [PATCH 3/6] Chore: fixed tests --- tests/lib/rule-tester/rule-tester.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/tests/lib/rule-tester/rule-tester.js b/tests/lib/rule-tester/rule-tester.js index eb5cd139592..8bcda24aa17 100644 --- a/tests/lib/rule-tester/rule-tester.js +++ b/tests/lib/rule-tester/rule-tester.js @@ -472,7 +472,7 @@ describe("RuleTester", () => { errors: [] }] }); - }, /errors array should have atleast one element otherwise its a valid case/u); + }, /errors array should have at least one element otherwise its a valid case/u); }); it("should not skip column assertion if column is a falsy value", () => { From a3360c6e481ce6672fb3ba4d175824d7b61dd0d5 Mon Sep 17 00:00:00 2001 From: Anix Date: Wed, 22 Apr 2020 08:38:06 +0000 Subject: [PATCH 4/6] Update: throw error for errors: 0 in test files --- lib/rule-tester/rule-tester.js | 5 +++++ tests/lib/rule-tester/rule-tester.js | 19 +++++++++++++++++++ 2 files changed, 24 insertions(+) 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"), { From 08cd6ffba3de2c460ac33e0ba62ce91f894d00ba Mon Sep 17 00:00:00 2001 From: Anix Date: Fri, 15 May 2020 10:26:06 +0000 Subject: [PATCH 5/6] Update: changed error message --- lib/rule-tester/rule-tester.js | 4 ++-- tests/lib/rule-tester/rule-tester.js | 4 ++-- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/lib/rule-tester/rule-tester.js b/lib/rule-tester/rule-tester.js index 2f8bc6d2601..25defc7a756 100644 --- a/lib/rule-tester/rule-tester.js +++ b/lib/rule-tester/rule-tester.js @@ -645,7 +645,7 @@ class RuleTester { `Did not specify errors for an invalid test of ${ruleName}`); if (Array.isArray(item.errors) && item.errors.length === 0) { - assert.fail("errors array should have at least one element otherwise its a valid case"); + assert.fail("Invalid cases must have at least one error"); } const ruleHasMetaMessages = hasOwnProperty(rule, "meta") && hasOwnProperty(rule.meta, "messages"); @@ -657,7 +657,7 @@ class RuleTester { if (typeof item.errors === "number") { if (item.errors === 0) { - assert.fail("errors of type `number` should not have value `0`"); + assert.fail("Invalid cases must have value greater than 0"); } assert.strictEqual(messages.length, item.errors, util.format("Should have %d error%s but had %d: %s", diff --git a/tests/lib/rule-tester/rule-tester.js b/tests/lib/rule-tester/rule-tester.js index f3d8932fb4e..db89a13d7b0 100644 --- a/tests/lib/rule-tester/rule-tester.js +++ b/tests/lib/rule-tester/rule-tester.js @@ -472,7 +472,7 @@ describe("RuleTester", () => { errors: [] }] }); - }, /errors array should have at least one element otherwise its a valid case/u); + }, /Invalid cases must have at least one error/u); }); it("should throw error for errors : 0", () => { @@ -491,7 +491,7 @@ describe("RuleTester", () => { ] } ); - }, /errors of type `number` should not have value `0`/u); + }, /Invalid cases must have value greater than 0/u); }); it("should not skip column assertion if column is a falsy value", () => { From 24339c55ba1b5ca5b9dd25e1fa043257afe6a615 Mon Sep 17 00:00:00 2001 From: Anix Date: Sat, 13 Jun 2020 18:39:58 +0000 Subject: [PATCH 6/6] Chore: changed assertion message --- lib/rule-tester/rule-tester.js | 2 +- tests/lib/rule-tester/rule-tester.js | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/lib/rule-tester/rule-tester.js b/lib/rule-tester/rule-tester.js index 25defc7a756..3e391576716 100644 --- a/lib/rule-tester/rule-tester.js +++ b/lib/rule-tester/rule-tester.js @@ -657,7 +657,7 @@ class RuleTester { if (typeof item.errors === "number") { if (item.errors === 0) { - assert.fail("Invalid cases must have value greater than 0"); + assert.fail("Invalid cases must have 'error' value greater than 0"); } assert.strictEqual(messages.length, item.errors, util.format("Should have %d error%s but had %d: %s", diff --git a/tests/lib/rule-tester/rule-tester.js b/tests/lib/rule-tester/rule-tester.js index db89a13d7b0..7e26e1a826c 100644 --- a/tests/lib/rule-tester/rule-tester.js +++ b/tests/lib/rule-tester/rule-tester.js @@ -491,7 +491,7 @@ describe("RuleTester", () => { ] } ); - }, /Invalid cases must have value greater than 0/u); + }, /Invalid cases must have 'error' value greater than 0/u); }); it("should not skip column assertion if column is a falsy value", () => {