tools: prefer common.expectsError in tests
Add lint rule to validate that common.expectsError(fn, err) is being used instead of assert.throws(fn, common.expectsError(err)); PR-URL: https://github.com/nodejs/node/pull/17557 Reviewed-By: Ruben Bridgewater <ruben@bridgewater.de> Reviewed-By: Colin Ihrig <cjihrig@gmail.com>
This commit is contained in:
parent
094bfaf769
commit
e51fb90a6d
@ -10,6 +10,7 @@ rules:
|
|||||||
# Custom rules in tools/eslint-rules
|
# Custom rules in tools/eslint-rules
|
||||||
prefer-assert-iferror: error
|
prefer-assert-iferror: error
|
||||||
prefer-assert-methods: error
|
prefer-assert-methods: error
|
||||||
|
prefer-common-expectserror: error
|
||||||
prefer-common-mustnotcall: error
|
prefer-common-mustnotcall: error
|
||||||
crypto-check: error
|
crypto-check: error
|
||||||
inspector-check: error
|
inspector-check: error
|
||||||
|
27
test/parallel/test-eslint-prefer-common-expectserror.js
Normal file
27
test/parallel/test-eslint-prefer-common-expectserror.js
Normal file
@ -0,0 +1,27 @@
|
|||||||
|
'use strict';
|
||||||
|
|
||||||
|
require('../common');
|
||||||
|
|
||||||
|
const RuleTester = require('../../tools/eslint').RuleTester;
|
||||||
|
const rule = require('../../tools/eslint-rules/prefer-common-expectserror');
|
||||||
|
|
||||||
|
const message = 'Please use common.expectsError(fn, err) instead of ' +
|
||||||
|
'assert.throws(fn, common.expectsError(err)).';
|
||||||
|
|
||||||
|
new RuleTester().run('prefer-common-expectserror', rule, {
|
||||||
|
valid: [
|
||||||
|
'assert.throws(fn, /[a-z]/)',
|
||||||
|
'assert.throws(function () {}, function() {})',
|
||||||
|
'common.expectsError(function() {}, err)'
|
||||||
|
],
|
||||||
|
invalid: [
|
||||||
|
{
|
||||||
|
code: 'assert.throws(function() {}, common.expectsError(err))',
|
||||||
|
errors: [{ message }]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
code: 'assert.throws(fn, common.expectsError(err))',
|
||||||
|
errors: [{ message }]
|
||||||
|
}
|
||||||
|
]
|
||||||
|
});
|
21
tools/eslint-rules/prefer-common-expectserror.js
Normal file
21
tools/eslint-rules/prefer-common-expectserror.js
Normal file
@ -0,0 +1,21 @@
|
|||||||
|
'use strict';
|
||||||
|
|
||||||
|
//------------------------------------------------------------------------------
|
||||||
|
// Rule Definition
|
||||||
|
//------------------------------------------------------------------------------
|
||||||
|
|
||||||
|
const msg = 'Please use common.expectsError(fn, err) instead of ' +
|
||||||
|
'assert.throws(fn, common.expectsError(err)).';
|
||||||
|
|
||||||
|
const astSelector =
|
||||||
|
'CallExpression[arguments.length=2]' +
|
||||||
|
'[callee.object.name="assert"]' +
|
||||||
|
'[callee.property.name="throws"]' +
|
||||||
|
'[arguments.1.callee.object.name="common"]' +
|
||||||
|
'[arguments.1.callee.property.name="expectsError"]';
|
||||||
|
|
||||||
|
module.exports = function(context) {
|
||||||
|
return {
|
||||||
|
[astSelector]: (node) => context.report(node, msg)
|
||||||
|
};
|
||||||
|
};
|
Loading…
x
Reference in New Issue
Block a user