From 41fafa43ae0b4f7afc394c49714d4d49bc026325 Mon Sep 17 00:00:00 2001 From: Rahul Gurung Date: Mon, 6 May 2019 00:10:41 +0530 Subject: [PATCH] feedback - I changed name of test and added more tests with other requested changes. --- ...type.md => no-typeerror-with-notthrows.md} | 0 index.js | 2 +- readme.md | 2 ++ ...type.js => no-typeerror-with-notthrows.js} | 11 +++--- test/no-typeerror-with-notthrows.js | 35 +++++++++++++++++++ test/prevent-errortype.js | 32 ----------------- 6 files changed, 43 insertions(+), 39 deletions(-) rename docs/rules/{prevent-errortype.md => no-typeerror-with-notthrows.md} (100%) rename rules/{prevent-errortype.js => no-typeerror-with-notthrows.js} (78%) create mode 100644 test/no-typeerror-with-notthrows.js delete mode 100644 test/prevent-errortype.js diff --git a/docs/rules/prevent-errortype.md b/docs/rules/no-typeerror-with-notthrows.md similarity index 100% rename from docs/rules/prevent-errortype.md rename to docs/rules/no-typeerror-with-notthrows.md diff --git a/index.js b/index.js index 3325aa76..3916df20 100644 --- a/index.js +++ b/index.js @@ -36,10 +36,10 @@ module.exports = { 'ava/no-statement-after-end': 'error', 'ava/no-todo-implementation': 'error', 'ava/no-todo-test': 'warn', + 'ava/no-typeerror-with-notthrows': 'error', 'ava/no-unknown-modifiers': 'error', 'ava/prefer-async-await': 'error', 'ava/prefer-power-assert': 'off', - 'ava/prevent-errortype': 'error', 'ava/test-ended': 'error', 'ava/test-title': [ 'error', diff --git a/readme.md b/readme.md index 74fad1c7..5b7808db 100644 --- a/readme.md +++ b/readme.md @@ -52,6 +52,7 @@ Configure it in `package.json`. "ava/no-statement-after-end": "error", "ava/no-todo-implementation": "error", "ava/no-todo-test": "warn", + "ava/no-typeerror-with-notthrows": "error", "ava/no-unknown-modifiers": "error", "ava/prefer-async-await": "error", "ava/prefer-power-assert": "off", @@ -90,6 +91,7 @@ The rules will only activate in test files. - [no-statement-after-end](docs/rules/no-statement-after-end.md) - Ensure `t.end()` is the last statement executed. - [no-todo-implementation](docs/rules/no-todo-implementation.md) - Ensure `test.todo()` is not given an implementation function. - [no-todo-test](docs/rules/no-todo-test.md) - Ensure no `test.todo()` is used. +- [no-typeerror-with-notthrows](docs/rules/no-typeerror-with-notthrows.md) - Prevent use of typerror with notthrows. - [no-unknown-modifiers](docs/rules/no-unknown-modifiers.md) - Prevent the use of unknown test modifiers. - [prefer-async-await](docs/rules/prefer-async-await.md) - Prefer using async/await instead of returning a Promise. - [prefer-power-assert](docs/rules/prefer-power-assert.md) - Allow only use of the asserts that have no [power-assert](https://github.com/power-assert-js/power-assert) alternative. diff --git a/rules/prevent-errortype.js b/rules/no-typeerror-with-notthrows.js similarity index 78% rename from rules/prevent-errortype.js rename to rules/no-typeerror-with-notthrows.js index ec19c352..7a1e031a 100644 --- a/rules/prevent-errortype.js +++ b/rules/no-typeerror-with-notthrows.js @@ -3,7 +3,7 @@ const {visitIf} = require('enhance-visitors'); const util = require('../util'); const createAvaRule = require('../create-ava-rule'); -const nameRegexp = /^(?:[A-Z][a-z0-9]*)*Error$/; +const errorNameRegex = /^(?:[A-Z][a-z\d]*)*Error$/; const create = context => { const ava = createAvaRule(); @@ -14,7 +14,6 @@ const create = context => { ava.isInTestNode ])(node => { const functionArgIndex = node.arguments.length - 1; - let functionArgName; if (typeof node.callee.property === 'undefined') { return; @@ -22,14 +21,14 @@ const create = context => { const calleeProperty = node.callee.property.name; - if (functionArgIndex === 1) { - functionArgName = node.arguments[1].name; - } else { + if (functionArgIndex !== 1) { return; } + const functionArgName = node.arguments[1].name; + if (calleeProperty === 'notThrows') { - if (nameRegexp.test(functionArgName)) { + if (errorNameRegex.test(functionArgName)) { context.report({ node, message: 'Do not specify Error in t.notThrows()' diff --git a/test/no-typeerror-with-notthrows.js b/test/no-typeerror-with-notthrows.js new file mode 100644 index 00000000..18879892 --- /dev/null +++ b/test/no-typeerror-with-notthrows.js @@ -0,0 +1,35 @@ +import test from 'ava'; +import avaRuleTester from 'eslint-ava-rule-tester'; +import rule from '../rules/no-typeerror-with-notthrows'; + +const ruleTester = avaRuleTester(test, { + env: { + es6: true + } +}); + +const errors = [{ruleId: 'no-typerror-with-notthrows'}]; + +const header = `const test = require('ava');\n`; // eslint-disable-line quotes + +ruleTester.run('no-typeerror-with-notthrows', rule, { + valid: [ + `${header} test('some test',t => {t.notThrows(() => {t.pass();});});`, + `${header} test(t => {t.notThrows(() => {t.pass();});});`, + `${header} test(t => {t.throws(() => {t.pass();}, TypeError);});`, + `${header} test(t => {t.end(); })`, + `${header} test('some test',t => {t.notThrows(() => {t.pass();}, true);});`, + `${header} test('some test',t => {t.notThrows(() => {t.pass();}, 'some string');});`, + `${header} test('some test',t => {t.notThrows(() => {t.pass();}, {firstName:'some', lastName: 'object'});});` + ], + invalid: [ + { + code: `${header} test(t => {t.notThrows(() => {t.pass();}, TypeError);});`, + errors + }, + { + code: `${header} test('some test',t => {t.notThrows(() => {t.pass();}, TypeError);});`, + errors + } + ] +}); diff --git a/test/prevent-errortype.js b/test/prevent-errortype.js deleted file mode 100644 index 71cd3c95..00000000 --- a/test/prevent-errortype.js +++ /dev/null @@ -1,32 +0,0 @@ -import test from 'ava'; -import avaRuleTester from 'eslint-ava-rule-tester'; -import rule from '../rules/prevent-errortype'; - -const ruleTester = avaRuleTester(test, { - env: { - es6: true - } -}); - -const errors = [{ruleId: 'prevent-errortype'}]; - -const header = 'const test = require(\'ava\');\n'; - -ruleTester.run('prevent-errortype', rule, { - valid: [ - header + 'test(\'some test\',t => {t.notThrows(() => {t.pass();});});', - header + 'test(t => {t.notThrows(() => {t.pass();});});', - header + 'test(t => {t.throws(() => {t.pass();}, TypeError);});', - header + 'test(t => {t.end(); });' - ], - invalid: [ - { - code: header + 'test(t => {t.notThrows(() => {t.pass();}, TypeError);});', - errors - }, - { - code: header + 'test(\'some test\',t => {t.notThrows(() => {t.pass();}, TypeError);});', - errors - } - ] -});