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
|
||||
prefer-assert-iferror: error
|
||||
prefer-assert-methods: error
|
||||
prefer-common-expectserror: error
|
||||
prefer-common-mustnotcall: error
|
||||
crypto-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