Skip to content

Commit

Permalink
Speed up AST utils
Browse files Browse the repository at this point in the history
  • Loading branch information
szuend committed Mar 5, 2021
1 parent faa8bbf commit b8fd70b
Show file tree
Hide file tree
Showing 3 changed files with 22 additions and 9 deletions.
8 changes: 5 additions & 3 deletions lib/rules/no-exclusive-tests.js
Original file line number Diff line number Diff line change
Expand Up @@ -12,11 +12,13 @@ module.exports = {
create(context) {
const astUtils = createAstUtils(context.settings);

const options = { modifiers: [ 'only' ], modifiersOnly: true };
const isDescribe = astUtils.buildIsDescribeAnswerer(options);
const isTestCase = astUtils.buildIsTestCaseAnswerer(options);

return {
CallExpression(node) {
const options = { modifiers: [ 'only' ], modifiersOnly: true };

if (astUtils.isDescribe(node, options) || astUtils.isTestCase(node, options)) {
if (isDescribe(node) || isTestCase(node)) {
const callee = node.callee;

context.report({
Expand Down
3 changes: 2 additions & 1 deletion lib/rules/no-pending-tests.js
Original file line number Diff line number Diff line change
Expand Up @@ -11,9 +11,10 @@ module.exports = {
},
create(context) {
const astUtils = createAstUtils(context.settings);
const isTestCase = astUtils.buildIsTestCaseAnswerer();

function isPendingMochaTest(node) {
return astUtils.isTestCase(node) &&
return isTestCase(node) &&
node.arguments.length === 1 &&
node.arguments[0].type === 'Literal';
}
Expand Down
20 changes: 15 additions & 5 deletions lib/util/ast.js
Original file line number Diff line number Diff line change
Expand Up @@ -66,18 +66,26 @@ function isFunctionCallWithName(node, names) {
function createAstUtils(settings) {
const additionalCustomNames = getAddtionalNames(settings);

function isDescribe(node, options = {}) {
function buildIsDescribeAnswerer(options) {
const { modifiers = [ 'skip', 'only' ], modifiersOnly = false } = options;
const describeAliases = getSuiteNames({ modifiersOnly, modifiers, additionalCustomNames });

return isFunctionCallWithName(node, describeAliases);
return (node) => isFunctionCallWithName(node, describeAliases);
}

function isTestCase(node, options = {}) {
function isDescribe(node, options = {}) {
return (buildIsDescribeAnswerer(options))(node);
}

function buildIsTestCaseAnswerer(options = {}) {
const { modifiers = [ 'skip', 'only' ], modifiersOnly = false } = options;
const testCaseNames = getTestCaseNames({ modifiersOnly, modifiers, additionalCustomNames });

return isFunctionCallWithName(node, testCaseNames);
return (node) => isFunctionCallWithName(node, testCaseNames);
}

function isTestCase(node, options = {}) {
return (buildIsTestCaseAnswerer(options))(node);
}

function isSuiteConfigExpression(node) {
Expand Down Expand Up @@ -132,7 +140,9 @@ function createAstUtils(settings) {
isSuiteConfigCall,
hasParentMochaFunctionCall,
findReturnStatement,
isReturnOfUndefined
isReturnOfUndefined,
buildIsDescribeAnswerer,
buildIsTestCaseAnswerer,
};
}

Expand Down

0 comments on commit b8fd70b

Please sign in to comment.