UNPKG

eslint-plugin-mocha

Version:

Eslint rules for mocha.

51 lines 1.64 kB
import { createMochaVisitors } from "../ast/mocha-visitors.js"; import { getParentNode, isFunction, isProgram } from "../ast/node-types.js"; const conditionalNodeTypes = new Set([ 'IfStatement', 'ConditionalExpression', 'LogicalExpression' ]); function isConditionalNode(node) { return conditionalNodeTypes.has(node.type); } function isInsideConditional(node) { let current = node; for (;;) { const parent = getParentNode(current); if (isFunction(parent) || isProgram(parent)) { return false; } if (isConditionalNode(parent)) { return true; } current = parent; } } export const noConditionalTestsRule = { meta: { type: 'problem', docs: { description: 'Disallow conditional suite and test declarations', recommended: true, url: 'https://github.com/lo1tuma/eslint-plugin-mocha/blob/main/documentation/rules/no-conditional-tests.md' }, schema: [], messages: { unexpectedConditionalTest: 'Unexpected conditional Mocha suite or test declaration.' }, languages: ['js/js'] }, create(context) { return createMochaVisitors(context, { suiteOrTestCase(visitorContext) { if (isInsideConditional(visitorContext.node)) { context.report({ node: visitorContext.node, messageId: 'unexpectedConditionalTest' }); } } }); } }; //# sourceMappingURL=no-conditional-tests.js.map