| 1 | "use strict";
|
|---|
| 2 |
|
|---|
| 3 | Object.defineProperty(exports, "__esModule", {
|
|---|
| 4 | value: true
|
|---|
| 5 | });
|
|---|
| 6 | exports.default = void 0;
|
|---|
| 7 |
|
|---|
| 8 | var _utils = require("./utils");
|
|---|
| 9 |
|
|---|
| 10 | var _default = (0, _utils.createRule)({
|
|---|
| 11 | name: __filename,
|
|---|
| 12 | meta: {
|
|---|
| 13 | docs: {
|
|---|
| 14 | category: 'Best Practices',
|
|---|
| 15 | description: 'Disallow disabled tests',
|
|---|
| 16 | recommended: 'warn'
|
|---|
| 17 | },
|
|---|
| 18 | messages: {
|
|---|
| 19 | missingFunction: 'Test is missing function argument',
|
|---|
| 20 | skippedTestSuite: 'Skipped test suite',
|
|---|
| 21 | skippedTest: 'Skipped test',
|
|---|
| 22 | pending: 'Call to pending()',
|
|---|
| 23 | pendingSuite: 'Call to pending() within test suite',
|
|---|
| 24 | pendingTest: 'Call to pending() within test',
|
|---|
| 25 | disabledSuite: 'Disabled test suite',
|
|---|
| 26 | disabledTest: 'Disabled test'
|
|---|
| 27 | },
|
|---|
| 28 | schema: [],
|
|---|
| 29 | type: 'suggestion'
|
|---|
| 30 | },
|
|---|
| 31 | defaultOptions: [],
|
|---|
| 32 |
|
|---|
| 33 | create(context) {
|
|---|
| 34 | let suiteDepth = 0;
|
|---|
| 35 | let testDepth = 0;
|
|---|
| 36 | return {
|
|---|
| 37 | 'CallExpression[callee.name="describe"]'() {
|
|---|
| 38 | suiteDepth++;
|
|---|
| 39 | },
|
|---|
| 40 |
|
|---|
| 41 | 'CallExpression[callee.name=/^(it|test)$/]'() {
|
|---|
| 42 | testDepth++;
|
|---|
| 43 | },
|
|---|
| 44 |
|
|---|
| 45 | 'CallExpression[callee.name=/^(it|test)$/][arguments.length<2]'(node) {
|
|---|
| 46 | context.report({
|
|---|
| 47 | messageId: 'missingFunction',
|
|---|
| 48 | node
|
|---|
| 49 | });
|
|---|
| 50 | },
|
|---|
| 51 |
|
|---|
| 52 | CallExpression(node) {
|
|---|
| 53 | const functionName = (0, _utils.getNodeName)(node.callee); // prevent duplicate warnings for it.each()()
|
|---|
| 54 |
|
|---|
| 55 | if (node.callee.type === 'CallExpression') {
|
|---|
| 56 | return;
|
|---|
| 57 | }
|
|---|
| 58 |
|
|---|
| 59 | switch (functionName) {
|
|---|
| 60 | case 'describe.skip.each':
|
|---|
| 61 | case 'xdescribe.each':
|
|---|
| 62 | case 'describe.skip':
|
|---|
| 63 | context.report({
|
|---|
| 64 | messageId: 'skippedTestSuite',
|
|---|
| 65 | node
|
|---|
| 66 | });
|
|---|
| 67 | break;
|
|---|
| 68 |
|
|---|
| 69 | case 'it.skip':
|
|---|
| 70 | case 'it.concurrent.skip':
|
|---|
| 71 | case 'test.skip':
|
|---|
| 72 | case 'test.concurrent.skip':
|
|---|
| 73 | case 'it.skip.each':
|
|---|
| 74 | case 'test.skip.each':
|
|---|
| 75 | case 'xit.each':
|
|---|
| 76 | case 'xtest.each':
|
|---|
| 77 | context.report({
|
|---|
| 78 | messageId: 'skippedTest',
|
|---|
| 79 | node
|
|---|
| 80 | });
|
|---|
| 81 | break;
|
|---|
| 82 | }
|
|---|
| 83 | },
|
|---|
| 84 |
|
|---|
| 85 | 'CallExpression[callee.name="pending"]'(node) {
|
|---|
| 86 | if ((0, _utils.scopeHasLocalReference)(context.getScope(), 'pending')) {
|
|---|
| 87 | return;
|
|---|
| 88 | }
|
|---|
| 89 |
|
|---|
| 90 | if (testDepth > 0) {
|
|---|
| 91 | context.report({
|
|---|
| 92 | messageId: 'pendingTest',
|
|---|
| 93 | node
|
|---|
| 94 | });
|
|---|
| 95 | } else if (suiteDepth > 0) {
|
|---|
| 96 | context.report({
|
|---|
| 97 | messageId: 'pendingSuite',
|
|---|
| 98 | node
|
|---|
| 99 | });
|
|---|
| 100 | } else {
|
|---|
| 101 | context.report({
|
|---|
| 102 | messageId: 'pending',
|
|---|
| 103 | node
|
|---|
| 104 | });
|
|---|
| 105 | }
|
|---|
| 106 | },
|
|---|
| 107 |
|
|---|
| 108 | 'CallExpression[callee.name="xdescribe"]'(node) {
|
|---|
| 109 | context.report({
|
|---|
| 110 | messageId: 'disabledSuite',
|
|---|
| 111 | node
|
|---|
| 112 | });
|
|---|
| 113 | },
|
|---|
| 114 |
|
|---|
| 115 | 'CallExpression[callee.name=/^(xit|xtest)$/]'(node) {
|
|---|
| 116 | context.report({
|
|---|
| 117 | messageId: 'disabledTest',
|
|---|
| 118 | node
|
|---|
| 119 | });
|
|---|
| 120 | },
|
|---|
| 121 |
|
|---|
| 122 | 'CallExpression[callee.name="describe"]:exit'() {
|
|---|
| 123 | suiteDepth--;
|
|---|
| 124 | },
|
|---|
| 125 |
|
|---|
| 126 | 'CallExpression[callee.name=/^(it|test)$/]:exit'() {
|
|---|
| 127 | testDepth--;
|
|---|
| 128 | }
|
|---|
| 129 |
|
|---|
| 130 | };
|
|---|
| 131 | }
|
|---|
| 132 |
|
|---|
| 133 | });
|
|---|
| 134 |
|
|---|
| 135 | exports.default = _default; |
|---|