From 374cba0e11a798c5c58cac0f6383231e0f659ec5 Mon Sep 17 00:00:00 2001 From: Bryan Mishkin <698306+bmish@users.noreply.github.com> Date: Sat, 10 Apr 2021 12:15:18 -0700 Subject: [PATCH 1/5] fix: boolean assertions were missed by some rules Adds the new boolean assertions (`true` and `false`) to our list of assertions so that they will be taken into account by several rules. Adds test cases to several rules. --- lib/utils.js | 6 +++ tests/lib/rules/assert-args.js | 52 +++++++++++++++++++ .../lib/rules/no-assert-logical-expression.js | 28 ++++++++++ tests/lib/rules/no-conditional-assertions.js | 1 + tests/lib/rules/no-global-assertions.js | 2 + 5 files changed, 89 insertions(+) diff --git a/lib/utils.js b/lib/utils.js index 3b37f8be..61a289fb 100644 --- a/lib/utils.js +++ b/lib/utils.js @@ -21,6 +21,9 @@ const ASSERTION_METADATA = { allowedArities: [2], compareActualFirst: true }, + false: { + allowedArities: [1] + }, notDeepEqual: { allowedArities: [2], compareActualFirst: true @@ -56,6 +59,9 @@ const ASSERTION_METADATA = { }, throws: { allowedArities: [1, 2] + }, + true: { + allowedArities: [1] } }; diff --git a/tests/lib/rules/assert-args.js b/tests/lib/rules/assert-args.js index 1bb2a4fa..3179a85d 100644 --- a/tests/lib/rules/assert-args.js +++ b/tests/lib/rules/assert-args.js @@ -44,6 +44,10 @@ ruleTester.run("assert-args", rule, { wrap("assert.equal(result, expected, 'Message');"), wrap("assert.equal(obj[key], expected, key + ' value is true');"), + // false + wrap("false(result);"), + wrap("false(result, 'Message');"), + // strictEqual wrap("strictEqual(result, expected);"), wrap("strictEqual(result, expected, 'Message');"), @@ -98,6 +102,10 @@ ruleTester.run("assert-args", rule, { wrap("assert.throws(function () {}, 'Error', 'Message');"), wrap("assert.throws(function () {}, TypeError, expectedMessage);"), + // true + wrap("true(result);"), + wrap("true(result, 'Message');"), + // notOk wrap("notOk(result);"), wrap("notOk(result, 'Result is true');"), @@ -279,6 +287,50 @@ ruleTester.run("assert-args", rule, { }] }, + // false + { + code: wrap("assert.false();"), + errors: [{ + messageId: "unexpectedArgCountNoMessage", + data: { + callee: "assert.false", + argCount: 0 + } + }] + }, + { + code: wrap("assert.false(a, b, 'Message');"), + errors: [{ + messageId: "unexpectedArgCount", + data: { + callee: "assert.false", + argCount: 3 + } + }] + }, + + // true + { + code: wrap("assert.true();"), + errors: [{ + messageId: "unexpectedArgCountNoMessage", + data: { + callee: "assert.true", + argCount: 0 + } + }] + }, + { + code: wrap("assert.true(a, b, 'Message');"), + errors: [{ + messageId: "unexpectedArgCount", + data: { + callee: "assert.true", + argCount: 3 + } + }] + }, + // strictEqual { code: wrap("strictEqual();"), diff --git a/tests/lib/rules/no-assert-logical-expression.js b/tests/lib/rules/no-assert-logical-expression.js index 59bb6eac..9d90203c 100644 --- a/tests/lib/rules/no-assert-logical-expression.js +++ b/tests/lib/rules/no-assert-logical-expression.js @@ -30,6 +30,7 @@ ruleTester.run("no-assert-logical-expression", rule, { // Simple assertions wrap("assert.ok(foo);"), wrap("assert.equal(foo, bar);"), + wrap("assert.false(foo);"), wrap("assert.strictEqual(foo, bar);"), wrap("assert.deepEqual(foo, bar);"), wrap("assert.propEqual(foo, bar);"), @@ -40,6 +41,7 @@ ruleTester.run("no-assert-logical-expression", rule, { wrap("assert.notPropEqual(foo, bar);"), wrap("assert.raises(function () {}, /Message/);"), wrap("assert.throws(function () {}, /Message/);"), + wrap("assert.true(foo);"), // Logical expressions inside raises/throw blocks are fine wrap("assert.raises(function () { throw (foo || bar); });"), @@ -421,6 +423,32 @@ ruleTester.run("no-assert-logical-expression", rule, { line: 1, column: 72 }] + }, + + // Boolean assertions + { + code: wrap("assert.true(foo && bar);"), + errors: [{ + messageId: "noLogicalOperator", + data: { + operator: "&&" + }, + type: "LogicalExpression", + line: 1, + column: 52 + }] + }, + { + code: wrap("assert.false(foo && bar);"), + errors: [{ + messageId: "noLogicalOperator", + data: { + operator: "&&" + }, + type: "LogicalExpression", + line: 1, + column: 53 + }] } ] }); diff --git a/tests/lib/rules/no-conditional-assertions.js b/tests/lib/rules/no-conditional-assertions.js index 0cfdd049..ee8dee15 100644 --- a/tests/lib/rules/no-conditional-assertions.js +++ b/tests/lib/rules/no-conditional-assertions.js @@ -76,6 +76,7 @@ ruleTester.run("no-conditional-assertions", rule, { invalid: [ "if (foo) assert.ok(true);", "if (foo) { assert.ok(true); }", + "if (foo) { assert.true(true); }", "if (foo) {} else if (bar) assert.ok(true);", "if (foo) {} else assert.ok(true);", "foo ? assert.ok(true) : false", diff --git a/tests/lib/rules/no-global-assertions.js b/tests/lib/rules/no-global-assertions.js index e78d3e96..079bef16 100644 --- a/tests/lib/rules/no-global-assertions.js +++ b/tests/lib/rules/no-global-assertions.js @@ -40,6 +40,7 @@ ruleTester.run("no-global-assertions", rule, { valid: [ wrap("assert.ok(true);"), wrap("assert.equal(a, b);"), + wrap("assert.false(foo);"), wrap("assert.strictEqual(a, b);"), wrap("assert.deepEqual(a, b);"), wrap("assert.propEqual(a, b);"), @@ -49,6 +50,7 @@ ruleTester.run("no-global-assertions", rule, { wrap("assert.notPropEqual(a, b);"), wrap("assert.raises(function () {}, TypeError);"), wrap("assert.throws(function () {}, TypeError);"), + wrap("assert.true(foo);"), wrap("assert.expect(1);"), // Global overridden by local import/declaration. From b4f5f84ef836034a239c9d2171f20d2e8b171061 Mon Sep 17 00:00:00 2001 From: Bryan Mishkin <698306+bmish@users.noreply.github.com> Date: Tue, 20 Apr 2021 17:59:15 -0700 Subject: [PATCH 2/5] Update tests/lib/rules/assert-args.js Co-authored-by: Kevin Partington --- tests/lib/rules/assert-args.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/tests/lib/rules/assert-args.js b/tests/lib/rules/assert-args.js index 3179a85d..203e8752 100644 --- a/tests/lib/rules/assert-args.js +++ b/tests/lib/rules/assert-args.js @@ -46,7 +46,7 @@ ruleTester.run("assert-args", rule, { // false wrap("false(result);"), - wrap("false(result, 'Message');"), + wrap("assert.false(result, 'Message');"), // strictEqual wrap("strictEqual(result, expected);"), From 15b6dc6da55ca81904f483c1f5d9598f2c76754a Mon Sep 17 00:00:00 2001 From: Bryan Mishkin <698306+bmish@users.noreply.github.com> Date: Tue, 20 Apr 2021 17:59:19 -0700 Subject: [PATCH 3/5] Update tests/lib/rules/assert-args.js Co-authored-by: Kevin Partington --- tests/lib/rules/assert-args.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/tests/lib/rules/assert-args.js b/tests/lib/rules/assert-args.js index 203e8752..c6811fbf 100644 --- a/tests/lib/rules/assert-args.js +++ b/tests/lib/rules/assert-args.js @@ -45,7 +45,7 @@ ruleTester.run("assert-args", rule, { wrap("assert.equal(obj[key], expected, key + ' value is true');"), // false - wrap("false(result);"), + wrap("assert.false(result);"), wrap("assert.false(result, 'Message');"), // strictEqual From ada4f6ec073335dd9fe0cc3e5e24bf3bedcdc9db Mon Sep 17 00:00:00 2001 From: Bryan Mishkin <698306+bmish@users.noreply.github.com> Date: Tue, 20 Apr 2021 17:59:23 -0700 Subject: [PATCH 4/5] Update tests/lib/rules/assert-args.js Co-authored-by: Kevin Partington --- tests/lib/rules/assert-args.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/tests/lib/rules/assert-args.js b/tests/lib/rules/assert-args.js index c6811fbf..8d4b7a94 100644 --- a/tests/lib/rules/assert-args.js +++ b/tests/lib/rules/assert-args.js @@ -103,7 +103,7 @@ ruleTester.run("assert-args", rule, { wrap("assert.throws(function () {}, TypeError, expectedMessage);"), // true - wrap("true(result);"), + wrap("assert.true(result);"), wrap("true(result, 'Message');"), // notOk From 3216960e0bfa5ce5c258abb84089ef76f5e43b65 Mon Sep 17 00:00:00 2001 From: Bryan Mishkin <698306+bmish@users.noreply.github.com> Date: Tue, 20 Apr 2021 17:59:27 -0700 Subject: [PATCH 5/5] Update tests/lib/rules/assert-args.js Co-authored-by: Kevin Partington --- tests/lib/rules/assert-args.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/tests/lib/rules/assert-args.js b/tests/lib/rules/assert-args.js index 8d4b7a94..82f62fe2 100644 --- a/tests/lib/rules/assert-args.js +++ b/tests/lib/rules/assert-args.js @@ -104,7 +104,7 @@ ruleTester.run("assert-args", rule, { // true wrap("assert.true(result);"), - wrap("true(result, 'Message');"), + wrap("assert.true(result, 'Message');"), // notOk wrap("notOk(result);"),