eslint-plugin-mocha
Version:
Eslint rules for mocha.
51 lines • 1.64 kB
JavaScript
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