UNPKG

eslint-plugin-ava

Version:
61 lines (54 loc) 1.44 kB
import createAvaRule, {visitIf} from '../create-ava-rule.js'; import util from '../util.js'; const MESSAGE_ID = 'no-skip-assert'; const MESSAGE_ID_SUGGESTION = 'no-skip-assert-suggestion'; const create = context => { const ava = createAvaRule(context.sourceCode); return ava.merge({ MemberExpression: visitIf([ ava.isInTestFile, ava.isInTestNode, ])(node => { if (node.property.name !== 'skip') { return; } const root = util.getRootNode(node); if (!util.isTestObject(root.object.name)) { return; } // Only flag real AVA assertion modifiers like `t.is.skip()`. // Unsupported chains like `t.skip.is()` are left alone. if (util.assertionMethods.has(root.property.name)) { context.report({ node, messageId: MESSAGE_ID, suggest: [{ messageId: MESSAGE_ID_SUGGESTION, fix(fixer) { const {sourceCode} = context; const dotToken = sourceCode.getTokenBefore(node.property); return fixer.removeRange([dotToken.range[0], node.property.range[1]]); }, }], }); } }), }); }; export default { create, meta: { type: 'suggestion', docs: { description: 'Disallow skipping assertions.', recommended: true, url: util.getDocsUrl(import.meta.filename), }, hasSuggestions: true, schema: [], messages: { [MESSAGE_ID]: 'No assertions should be skipped.', [MESSAGE_ID_SUGGESTION]: 'Remove the `.skip`.', }, }, };