eslint-plugin-jest 27.1.2 → 27.1.4
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +81 -80
- package/docs/rules/consistent-test-it.md +4 -11
- package/docs/rules/expect-expect.md +3 -4
- package/docs/rules/max-expects.md +1 -5
- package/docs/rules/max-nested-describe.md +1 -5
- package/docs/rules/no-alias-methods.md +8 -10
- package/docs/rules/no-commented-out-tests.md +3 -4
- package/docs/rules/no-conditional-expect.md +4 -5
- package/docs/rules/no-conditional-in-test.md +1 -5
- package/docs/rules/no-deprecated-functions.md +5 -7
- package/docs/rules/no-disabled-tests.md +3 -4
- package/docs/rules/no-done-callback.md +6 -8
- package/docs/rules/no-duplicate-hooks.md +1 -5
- package/docs/rules/no-export.md +3 -4
- package/docs/rules/no-focused-tests.md +5 -7
- package/docs/rules/no-hooks.md +1 -5
- package/docs/rules/no-identical-title.md +3 -4
- package/docs/rules/no-if.md +2 -2
- package/docs/rules/no-interpolation-in-snapshots.md +3 -4
- package/docs/rules/no-jasmine-globals.md +6 -8
- package/docs/rules/no-large-snapshots.md +2 -6
- package/docs/rules/no-mocks-import.md +3 -4
- package/docs/rules/no-restricted-jest-methods.md +1 -5
- package/docs/rules/no-restricted-matchers.md +1 -5
- package/docs/rules/no-standalone-expect.md +3 -4
- package/docs/rules/no-test-prefixes.md +6 -8
- package/docs/rules/no-test-return-statement.md +1 -5
- package/docs/rules/prefer-called-with.md +1 -5
- package/docs/rules/prefer-comparison-matcher.md +3 -8
- package/docs/rules/prefer-each.md +1 -5
- package/docs/rules/prefer-equality-matcher.md +3 -8
- package/docs/rules/prefer-expect-assertions.md +3 -10
- package/docs/rules/prefer-expect-resolves.md +3 -8
- package/docs/rules/prefer-hooks-in-order.md +1 -5
- package/docs/rules/prefer-hooks-on-top.md +1 -5
- package/docs/rules/prefer-lowercase-title.md +3 -8
- package/docs/rules/prefer-mock-promise-shorthand.md +3 -8
- package/docs/rules/prefer-snapshot-hint.md +1 -5
- package/docs/rules/prefer-spy-on.md +3 -10
- package/docs/rules/prefer-strict-equal.md +3 -10
- package/docs/rules/prefer-to-be.md +5 -7
- package/docs/rules/prefer-to-contain.md +5 -9
- package/docs/rules/prefer-to-have-length.md +5 -9
- package/docs/rules/prefer-todo.md +3 -10
- package/docs/rules/require-hook.md +1 -5
- package/docs/rules/require-to-throw-message.md +1 -7
- package/docs/rules/require-top-level-describe.md +1 -5
- package/docs/rules/unbound-method.md +2 -4
- package/docs/rules/valid-describe-callback.md +3 -4
- package/docs/rules/valid-expect-in-promise.md +4 -5
- package/docs/rules/valid-expect.md +3 -6
- package/docs/rules/valid-title.md +5 -7
- package/lib/index.js +8 -16
- package/lib/processors/snapshot-processor.js +3 -5
- package/lib/rules/consistent-test-it.js +1 -19
- package/lib/rules/expect-expect.js +0 -15
- package/lib/rules/max-expects.js +0 -16
- package/lib/rules/max-nested-describe.js +0 -13
- package/lib/rules/no-alias-methods.js +0 -9
- package/lib/rules/no-commented-out-tests.js +0 -10
- package/lib/rules/no-conditional-expect.js +1 -20
- package/lib/rules/no-conditional-in-test.js +0 -9
- package/lib/rules/no-deprecated-functions.js +2 -18
- package/lib/rules/no-disabled-tests.js +2 -18
- package/lib/rules/no-done-callback.js +2 -31
- package/lib/rules/no-duplicate-hooks.js +0 -12
- package/lib/rules/no-export.js +0 -12
- package/lib/rules/no-focused-tests.js +0 -15
- package/lib/rules/no-hooks.js +0 -7
- package/lib/rules/no-identical-title.js +0 -19
- package/lib/rules/no-if.js +0 -24
- package/lib/rules/no-interpolation-in-snapshots.js +0 -9
- package/lib/rules/no-jasmine-globals.js +0 -22
- package/lib/rules/no-large-snapshots.js +3 -21
- package/lib/rules/no-mocks-import.js +0 -12
- package/lib/rules/no-restricted-jest-methods.js +1 -11
- package/lib/rules/no-restricted-matchers.js +0 -11
- package/lib/rules/no-standalone-expect.js +7 -33
- package/lib/rules/no-test-prefixes.js +1 -13
- package/lib/rules/no-test-return-statement.js +0 -12
- package/lib/rules/prefer-called-with.js +0 -10
- package/lib/rules/prefer-comparison-matcher.js +8 -33
- package/lib/rules/prefer-each.js +0 -18
- package/lib/rules/prefer-equality-matcher.js +11 -23
- package/lib/rules/prefer-expect-assertions.js +4 -51
- package/lib/rules/prefer-expect-resolves.js +0 -12
- package/lib/rules/prefer-hooks-in-order.js +2 -16
- package/lib/rules/prefer-hooks-on-top.js +0 -9
- package/lib/rules/prefer-lowercase-title.js +0 -23
- package/lib/rules/prefer-mock-promise-shorthand.js +5 -26
- package/lib/rules/prefer-snapshot-hint.js +7 -31
- package/lib/rules/prefer-spy-on.js +0 -17
- package/lib/rules/prefer-strict-equal.js +0 -9
- package/lib/rules/prefer-to-be.js +1 -30
- package/lib/rules/prefer-to-contain.js +11 -21
- package/lib/rules/prefer-to-have-length.js +4 -16
- package/lib/rules/prefer-todo.js +2 -18
- package/lib/rules/require-hook.js +0 -22
- package/lib/rules/require-to-throw-message.js +0 -9
- package/lib/rules/require-top-level-describe.js +0 -15
- package/lib/rules/unbound-method.js +2 -21
- package/lib/rules/utils/accessors.js +6 -18
- package/lib/rules/utils/detectJestVersion.js +2 -7
- package/lib/rules/utils/followTypeAssertionChain.js +0 -4
- package/lib/rules/utils/index.js +0 -10
- package/lib/rules/utils/misc.js +2 -46
- package/lib/rules/utils/parseJestFnCall.js +62 -118
- package/lib/rules/valid-describe-callback.js +0 -17
- package/lib/rules/valid-expect-in-promise.js +27 -94
- package/lib/rules/valid-expect.js +5 -48
- package/lib/rules/valid-title.js +0 -33
- package/package.json +3 -2
package/lib/rules/prefer-todo.js
CHANGED
|
@@ -4,40 +4,31 @@ Object.defineProperty(exports, "__esModule", {
|
|
|
4
4
|
value: true
|
|
5
5
|
});
|
|
6
6
|
exports.default = void 0;
|
|
7
|
-
|
|
8
7
|
var _utils = require("@typescript-eslint/utils");
|
|
9
|
-
|
|
10
8
|
var _utils2 = require("./utils");
|
|
11
|
-
|
|
12
9
|
function isEmptyFunction(node) {
|
|
13
10
|
if (!(0, _utils2.isFunction)(node)) {
|
|
14
11
|
return false;
|
|
15
12
|
}
|
|
16
|
-
|
|
17
13
|
return node.body.type === _utils.AST_NODE_TYPES.BlockStatement && !node.body.body.length;
|
|
18
14
|
}
|
|
19
|
-
|
|
20
15
|
function createTodoFixer(jestFnCall, fixer) {
|
|
21
16
|
if (jestFnCall.members.length) {
|
|
22
17
|
return (0, _utils2.replaceAccessorFixer)(fixer, jestFnCall.members[0], 'todo');
|
|
23
18
|
}
|
|
24
|
-
|
|
25
19
|
return fixer.replaceText(jestFnCall.head.node, `${jestFnCall.head.local}.todo`);
|
|
26
20
|
}
|
|
27
|
-
|
|
28
21
|
const isTargetedTestCase = jestFnCall => {
|
|
29
22
|
if (jestFnCall.members.some(s => (0, _utils2.getAccessorValue)(s) !== 'skip')) {
|
|
30
23
|
return false;
|
|
31
|
-
}
|
|
32
|
-
|
|
24
|
+
}
|
|
33
25
|
|
|
26
|
+
// todo: we should support this too (needs custom fixer)
|
|
34
27
|
if (jestFnCall.name.startsWith('x')) {
|
|
35
28
|
return false;
|
|
36
29
|
}
|
|
37
|
-
|
|
38
30
|
return !jestFnCall.name.startsWith('f');
|
|
39
31
|
};
|
|
40
|
-
|
|
41
32
|
var _default = (0, _utils2.createRule)({
|
|
42
33
|
name: __filename,
|
|
43
34
|
meta: {
|
|
@@ -55,17 +46,14 @@ var _default = (0, _utils2.createRule)({
|
|
|
55
46
|
type: 'layout'
|
|
56
47
|
},
|
|
57
48
|
defaultOptions: [],
|
|
58
|
-
|
|
59
49
|
create(context) {
|
|
60
50
|
return {
|
|
61
51
|
CallExpression(node) {
|
|
62
52
|
const [title, callback] = node.arguments;
|
|
63
53
|
const jestFnCall = (0, _utils2.parseJestFnCall)(node, context);
|
|
64
|
-
|
|
65
54
|
if (!title || (jestFnCall === null || jestFnCall === void 0 ? void 0 : jestFnCall.type) !== 'test' || !isTargetedTestCase(jestFnCall) || !(0, _utils2.isStringNode)(title)) {
|
|
66
55
|
return;
|
|
67
56
|
}
|
|
68
|
-
|
|
69
57
|
if (callback && isEmptyFunction(callback)) {
|
|
70
58
|
context.report({
|
|
71
59
|
messageId: 'emptyTest',
|
|
@@ -73,7 +61,6 @@ var _default = (0, _utils2.createRule)({
|
|
|
73
61
|
fix: fixer => [fixer.removeRange([title.range[1], callback.range[1]]), createTodoFixer(jestFnCall, fixer)]
|
|
74
62
|
});
|
|
75
63
|
}
|
|
76
|
-
|
|
77
64
|
if ((0, _utils2.hasOnlyOneArgument)(node)) {
|
|
78
65
|
context.report({
|
|
79
66
|
messageId: 'unimplementedTest',
|
|
@@ -82,10 +69,7 @@ var _default = (0, _utils2.createRule)({
|
|
|
82
69
|
});
|
|
83
70
|
}
|
|
84
71
|
}
|
|
85
|
-
|
|
86
72
|
};
|
|
87
73
|
}
|
|
88
|
-
|
|
89
74
|
});
|
|
90
|
-
|
|
91
75
|
exports.default = _default;
|
|
@@ -4,49 +4,37 @@ Object.defineProperty(exports, "__esModule", {
|
|
|
4
4
|
value: true
|
|
5
5
|
});
|
|
6
6
|
exports.default = void 0;
|
|
7
|
-
|
|
8
7
|
var _utils = require("@typescript-eslint/utils");
|
|
9
|
-
|
|
10
8
|
var _utils2 = require("./utils");
|
|
11
|
-
|
|
12
9
|
const isJestFnCall = (node, context) => {
|
|
13
10
|
var _getNodeName;
|
|
14
|
-
|
|
15
11
|
if ((0, _utils2.parseJestFnCall)(node, context)) {
|
|
16
12
|
return true;
|
|
17
13
|
}
|
|
18
|
-
|
|
19
14
|
return !!((_getNodeName = (0, _utils2.getNodeName)(node)) !== null && _getNodeName !== void 0 && _getNodeName.startsWith('jest.'));
|
|
20
15
|
};
|
|
21
|
-
|
|
22
16
|
const isNullOrUndefined = node => {
|
|
23
17
|
return node.type === _utils.AST_NODE_TYPES.Literal && node.value === null || (0, _utils2.isIdentifier)(node, 'undefined');
|
|
24
18
|
};
|
|
25
|
-
|
|
26
19
|
const shouldBeInHook = (node, context, allowedFunctionCalls = []) => {
|
|
27
20
|
switch (node.type) {
|
|
28
21
|
case _utils.AST_NODE_TYPES.ExpressionStatement:
|
|
29
22
|
return shouldBeInHook(node.expression, context, allowedFunctionCalls);
|
|
30
|
-
|
|
31
23
|
case _utils.AST_NODE_TYPES.CallExpression:
|
|
32
24
|
return !(isJestFnCall(node, context) || allowedFunctionCalls.includes((0, _utils2.getNodeName)(node)));
|
|
33
|
-
|
|
34
25
|
case _utils.AST_NODE_TYPES.VariableDeclaration:
|
|
35
26
|
{
|
|
36
27
|
if (node.kind === 'const') {
|
|
37
28
|
return false;
|
|
38
29
|
}
|
|
39
|
-
|
|
40
30
|
return node.declarations.some(({
|
|
41
31
|
init
|
|
42
32
|
}) => init !== null && !isNullOrUndefined(init));
|
|
43
33
|
}
|
|
44
|
-
|
|
45
34
|
default:
|
|
46
35
|
return false;
|
|
47
36
|
}
|
|
48
37
|
};
|
|
49
|
-
|
|
50
38
|
var _default = (0, _utils2.createRule)({
|
|
51
39
|
name: __filename,
|
|
52
40
|
meta: {
|
|
@@ -75,12 +63,10 @@ var _default = (0, _utils2.createRule)({
|
|
|
75
63
|
defaultOptions: [{
|
|
76
64
|
allowedFunctionCalls: []
|
|
77
65
|
}],
|
|
78
|
-
|
|
79
66
|
create(context) {
|
|
80
67
|
const {
|
|
81
68
|
allowedFunctionCalls
|
|
82
69
|
} = context.options[0] ?? {};
|
|
83
|
-
|
|
84
70
|
const checkBlockBody = body => {
|
|
85
71
|
for (const statement of body) {
|
|
86
72
|
if (shouldBeInHook(statement, context, allowedFunctionCalls)) {
|
|
@@ -91,29 +77,21 @@ var _default = (0, _utils2.createRule)({
|
|
|
91
77
|
}
|
|
92
78
|
}
|
|
93
79
|
};
|
|
94
|
-
|
|
95
80
|
return {
|
|
96
81
|
Program(program) {
|
|
97
82
|
checkBlockBody(program.body);
|
|
98
83
|
},
|
|
99
|
-
|
|
100
84
|
CallExpression(node) {
|
|
101
85
|
if (!(0, _utils2.isTypeOfJestFnCall)(node, context, ['describe']) || node.arguments.length < 2) {
|
|
102
86
|
return;
|
|
103
87
|
}
|
|
104
|
-
|
|
105
88
|
const [, testFn] = node.arguments;
|
|
106
|
-
|
|
107
89
|
if (!(0, _utils2.isFunction)(testFn) || testFn.body.type !== _utils.AST_NODE_TYPES.BlockStatement) {
|
|
108
90
|
return;
|
|
109
91
|
}
|
|
110
|
-
|
|
111
92
|
checkBlockBody(testFn.body.body);
|
|
112
93
|
}
|
|
113
|
-
|
|
114
94
|
};
|
|
115
95
|
}
|
|
116
|
-
|
|
117
96
|
});
|
|
118
|
-
|
|
119
97
|
exports.default = _default;
|
|
@@ -4,9 +4,7 @@ Object.defineProperty(exports, "__esModule", {
|
|
|
4
4
|
value: true
|
|
5
5
|
});
|
|
6
6
|
exports.default = void 0;
|
|
7
|
-
|
|
8
7
|
var _utils = require("./utils");
|
|
9
|
-
|
|
10
8
|
var _default = (0, _utils.createRule)({
|
|
11
9
|
name: __filename,
|
|
12
10
|
meta: {
|
|
@@ -22,21 +20,17 @@ var _default = (0, _utils.createRule)({
|
|
|
22
20
|
schema: []
|
|
23
21
|
},
|
|
24
22
|
defaultOptions: [],
|
|
25
|
-
|
|
26
23
|
create(context) {
|
|
27
24
|
return {
|
|
28
25
|
CallExpression(node) {
|
|
29
26
|
const jestFnCall = (0, _utils.parseJestFnCall)(node, context);
|
|
30
|
-
|
|
31
27
|
if ((jestFnCall === null || jestFnCall === void 0 ? void 0 : jestFnCall.type) !== 'expect') {
|
|
32
28
|
return;
|
|
33
29
|
}
|
|
34
|
-
|
|
35
30
|
const {
|
|
36
31
|
matcher
|
|
37
32
|
} = jestFnCall;
|
|
38
33
|
const matcherName = (0, _utils.getAccessorValue)(matcher);
|
|
39
|
-
|
|
40
34
|
if (jestFnCall.args.length === 0 && ['toThrow', 'toThrowError'].includes(matcherName) && !jestFnCall.modifiers.some(nod => (0, _utils.getAccessorValue)(nod) === 'not')) {
|
|
41
35
|
// Look for `toThrow` calls with no arguments.
|
|
42
36
|
context.report({
|
|
@@ -48,10 +42,7 @@ var _default = (0, _utils.createRule)({
|
|
|
48
42
|
});
|
|
49
43
|
}
|
|
50
44
|
}
|
|
51
|
-
|
|
52
45
|
};
|
|
53
46
|
}
|
|
54
|
-
|
|
55
47
|
});
|
|
56
|
-
|
|
57
48
|
exports.default = _default;
|
|
@@ -4,15 +4,12 @@ Object.defineProperty(exports, "__esModule", {
|
|
|
4
4
|
value: true
|
|
5
5
|
});
|
|
6
6
|
exports.default = void 0;
|
|
7
|
-
|
|
8
7
|
var _utils = require("./utils");
|
|
9
|
-
|
|
10
8
|
const messages = {
|
|
11
9
|
tooManyDescribes: 'There should not be more than {{ max }} describe{{ s }} at the top level',
|
|
12
10
|
unexpectedTestCase: 'All test cases must be wrapped in a describe block.',
|
|
13
11
|
unexpectedHook: 'All hooks must be wrapped in a describe block.'
|
|
14
12
|
};
|
|
15
|
-
|
|
16
13
|
var _default = (0, _utils.createRule)({
|
|
17
14
|
name: __filename,
|
|
18
15
|
meta: {
|
|
@@ -35,7 +32,6 @@ var _default = (0, _utils.createRule)({
|
|
|
35
32
|
}]
|
|
36
33
|
},
|
|
37
34
|
defaultOptions: [{}],
|
|
38
|
-
|
|
39
35
|
create(context) {
|
|
40
36
|
const {
|
|
41
37
|
maxNumberOfTopLevelDescribes = Infinity
|
|
@@ -45,17 +41,13 @@ var _default = (0, _utils.createRule)({
|
|
|
45
41
|
return {
|
|
46
42
|
CallExpression(node) {
|
|
47
43
|
const jestFnCall = (0, _utils.parseJestFnCall)(node, context);
|
|
48
|
-
|
|
49
44
|
if (!jestFnCall) {
|
|
50
45
|
return;
|
|
51
46
|
}
|
|
52
|
-
|
|
53
47
|
if (jestFnCall.type === 'describe') {
|
|
54
48
|
numberOfDescribeBlocks++;
|
|
55
|
-
|
|
56
49
|
if (numberOfDescribeBlocks === 1) {
|
|
57
50
|
numberOfTopLevelDescribeBlocks++;
|
|
58
|
-
|
|
59
51
|
if (numberOfTopLevelDescribeBlocks > maxNumberOfTopLevelDescribes) {
|
|
60
52
|
context.report({
|
|
61
53
|
node,
|
|
@@ -67,10 +59,8 @@ var _default = (0, _utils.createRule)({
|
|
|
67
59
|
});
|
|
68
60
|
}
|
|
69
61
|
}
|
|
70
|
-
|
|
71
62
|
return;
|
|
72
63
|
}
|
|
73
|
-
|
|
74
64
|
if (numberOfDescribeBlocks === 0) {
|
|
75
65
|
if (jestFnCall.type === 'test') {
|
|
76
66
|
context.report({
|
|
@@ -79,7 +69,6 @@ var _default = (0, _utils.createRule)({
|
|
|
79
69
|
});
|
|
80
70
|
return;
|
|
81
71
|
}
|
|
82
|
-
|
|
83
72
|
if (jestFnCall.type === 'hook') {
|
|
84
73
|
context.report({
|
|
85
74
|
node,
|
|
@@ -89,16 +78,12 @@ var _default = (0, _utils.createRule)({
|
|
|
89
78
|
}
|
|
90
79
|
}
|
|
91
80
|
},
|
|
92
|
-
|
|
93
81
|
'CallExpression:exit'(node) {
|
|
94
82
|
if ((0, _utils.isTypeOfJestFnCall)(node, context, ['describe'])) {
|
|
95
83
|
numberOfDescribeBlocks--;
|
|
96
84
|
}
|
|
97
85
|
}
|
|
98
|
-
|
|
99
86
|
};
|
|
100
87
|
}
|
|
101
|
-
|
|
102
88
|
});
|
|
103
|
-
|
|
104
89
|
exports.default = _default;
|
|
@@ -4,32 +4,23 @@ Object.defineProperty(exports, "__esModule", {
|
|
|
4
4
|
value: true
|
|
5
5
|
});
|
|
6
6
|
exports.default = void 0;
|
|
7
|
-
|
|
8
7
|
var _utils = require("@typescript-eslint/utils");
|
|
9
|
-
|
|
10
8
|
var _utils2 = require("./utils");
|
|
11
|
-
|
|
12
9
|
const toThrowMatchers = ['toThrow', 'toThrowError', 'toThrowErrorMatchingSnapshot', 'toThrowErrorMatchingInlineSnapshot'];
|
|
13
|
-
|
|
14
10
|
const baseRule = (() => {
|
|
15
11
|
try {
|
|
16
12
|
// eslint-disable-next-line @typescript-eslint/no-require-imports
|
|
17
13
|
const TSESLintPlugin = require('@typescript-eslint/eslint-plugin');
|
|
18
|
-
|
|
19
14
|
return TSESLintPlugin.rules['unbound-method'];
|
|
20
15
|
} catch (e) {
|
|
21
16
|
const error = e;
|
|
22
|
-
|
|
23
17
|
if (error.code === 'MODULE_NOT_FOUND') {
|
|
24
18
|
return null;
|
|
25
19
|
}
|
|
26
|
-
|
|
27
20
|
throw error;
|
|
28
21
|
}
|
|
29
22
|
})();
|
|
30
|
-
|
|
31
23
|
const DEFAULT_MESSAGE = 'This rule requires `@typescript-eslint/eslint-plugin`';
|
|
32
|
-
|
|
33
24
|
var _default = (0, _utils2.createRule)({
|
|
34
25
|
defaultOptions: [{
|
|
35
26
|
ignoreStatic: false
|
|
@@ -52,39 +43,29 @@ var _default = (0, _utils2.createRule)({
|
|
|
52
43
|
recommended: false
|
|
53
44
|
}
|
|
54
45
|
},
|
|
55
|
-
|
|
56
46
|
create(context) {
|
|
57
47
|
const baseSelectors = baseRule === null || baseRule === void 0 ? void 0 : baseRule.create(context);
|
|
58
|
-
|
|
59
48
|
if (!baseSelectors) {
|
|
60
49
|
return {};
|
|
61
50
|
}
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
51
|
+
return {
|
|
52
|
+
...baseSelectors,
|
|
65
53
|
MemberExpression(node) {
|
|
66
54
|
var _node$parent, _baseSelectors$Member;
|
|
67
|
-
|
|
68
55
|
if (((_node$parent = node.parent) === null || _node$parent === void 0 ? void 0 : _node$parent.type) === _utils.AST_NODE_TYPES.CallExpression) {
|
|
69
56
|
const jestFnCall = (0, _utils2.parseJestFnCall)((0, _utils2.findTopMostCallExpression)(node.parent), context);
|
|
70
|
-
|
|
71
57
|
if ((jestFnCall === null || jestFnCall === void 0 ? void 0 : jestFnCall.type) === 'expect') {
|
|
72
58
|
const {
|
|
73
59
|
matcher
|
|
74
60
|
} = jestFnCall;
|
|
75
|
-
|
|
76
61
|
if (!toThrowMatchers.includes((0, _utils2.getAccessorValue)(matcher))) {
|
|
77
62
|
return;
|
|
78
63
|
}
|
|
79
64
|
}
|
|
80
65
|
}
|
|
81
|
-
|
|
82
66
|
(_baseSelectors$Member = baseSelectors.MemberExpression) === null || _baseSelectors$Member === void 0 ? void 0 : _baseSelectors$Member.call(baseSelectors, node);
|
|
83
67
|
}
|
|
84
|
-
|
|
85
68
|
};
|
|
86
69
|
}
|
|
87
|
-
|
|
88
70
|
});
|
|
89
|
-
|
|
90
71
|
exports.default = _default;
|
|
@@ -4,9 +4,7 @@ Object.defineProperty(exports, "__esModule", {
|
|
|
4
4
|
value: true
|
|
5
5
|
});
|
|
6
6
|
exports.isSupportedAccessor = exports.isStringNode = exports.isIdentifier = exports.getStringValue = exports.getAccessorValue = void 0;
|
|
7
|
-
|
|
8
7
|
var _utils = require("@typescript-eslint/utils");
|
|
9
|
-
|
|
10
8
|
/**
|
|
11
9
|
* Checks if the given `node` is a `StringLiteral`.
|
|
12
10
|
*
|
|
@@ -21,7 +19,6 @@ var _utils = require("@typescript-eslint/utils");
|
|
|
21
19
|
* @template V
|
|
22
20
|
*/
|
|
23
21
|
const isStringLiteral = (node, value) => node.type === _utils.AST_NODE_TYPES.Literal && typeof node.value === 'string' && (value === undefined || node.value === value);
|
|
24
|
-
|
|
25
22
|
/**
|
|
26
23
|
* Checks if the given `node` is a `TemplateLiteral`.
|
|
27
24
|
*
|
|
@@ -37,9 +34,9 @@ const isStringLiteral = (node, value) => node.type === _utils.AST_NODE_TYPES.Lit
|
|
|
37
34
|
*
|
|
38
35
|
* @template V
|
|
39
36
|
*/
|
|
40
|
-
const isTemplateLiteral = (node, value) => node.type === _utils.AST_NODE_TYPES.TemplateLiteral && node.quasis.length === 1 && (
|
|
37
|
+
const isTemplateLiteral = (node, value) => node.type === _utils.AST_NODE_TYPES.TemplateLiteral && node.quasis.length === 1 && (
|
|
38
|
+
// bail out if not simple
|
|
41
39
|
value === undefined || node.quasis[0].value.raw === value);
|
|
42
|
-
|
|
43
40
|
/**
|
|
44
41
|
* Checks if the given `node` is a {@link StringNode}.
|
|
45
42
|
*
|
|
@@ -51,6 +48,7 @@ value === undefined || node.quasis[0].value.raw === value);
|
|
|
51
48
|
* @template V
|
|
52
49
|
*/
|
|
53
50
|
const isStringNode = (node, specifics) => isStringLiteral(node, specifics) || isTemplateLiteral(node, specifics);
|
|
51
|
+
|
|
54
52
|
/**
|
|
55
53
|
* Gets the value of the given `StringNode`.
|
|
56
54
|
*
|
|
@@ -63,18 +61,13 @@ const isStringNode = (node, specifics) => isStringLiteral(node, specifics) || is
|
|
|
63
61
|
*
|
|
64
62
|
* @template S
|
|
65
63
|
*/
|
|
66
|
-
|
|
67
|
-
|
|
68
64
|
exports.isStringNode = isStringNode;
|
|
69
|
-
|
|
70
65
|
const getStringValue = node => isTemplateLiteral(node) ? node.quasis[0].value.raw : node.value;
|
|
66
|
+
|
|
71
67
|
/**
|
|
72
68
|
* An `Identifier` with a known `name` value - i.e `expect`.
|
|
73
69
|
*/
|
|
74
|
-
|
|
75
|
-
|
|
76
70
|
exports.getStringValue = getStringValue;
|
|
77
|
-
|
|
78
71
|
/**
|
|
79
72
|
* Checks if the given `node` is an `Identifier`.
|
|
80
73
|
*
|
|
@@ -89,6 +82,7 @@ exports.getStringValue = getStringValue;
|
|
|
89
82
|
* @template V
|
|
90
83
|
*/
|
|
91
84
|
const isIdentifier = (node, name) => node.type === _utils.AST_NODE_TYPES.Identifier && (name === undefined || node.name === name);
|
|
85
|
+
|
|
92
86
|
/**
|
|
93
87
|
* Checks if the given `node` is a "supported accessor".
|
|
94
88
|
*
|
|
@@ -111,11 +105,9 @@ const isIdentifier = (node, name) => node.type === _utils.AST_NODE_TYPES.Identif
|
|
|
111
105
|
*
|
|
112
106
|
* @template V
|
|
113
107
|
*/
|
|
114
|
-
|
|
115
|
-
|
|
116
108
|
exports.isIdentifier = isIdentifier;
|
|
117
|
-
|
|
118
109
|
const isSupportedAccessor = (node, value) => isIdentifier(node, value) || isStringNode(node, value);
|
|
110
|
+
|
|
119
111
|
/**
|
|
120
112
|
* Gets the value of the given `AccessorNode`,
|
|
121
113
|
* account for the different node types.
|
|
@@ -126,10 +118,6 @@ const isSupportedAccessor = (node, value) => isIdentifier(node, value) || isStri
|
|
|
126
118
|
*
|
|
127
119
|
* @template S
|
|
128
120
|
*/
|
|
129
|
-
|
|
130
|
-
|
|
131
121
|
exports.isSupportedAccessor = isSupportedAccessor;
|
|
132
|
-
|
|
133
122
|
const getAccessorValue = accessor => accessor.type === _utils.AST_NODE_TYPES.Identifier ? accessor.name : getStringValue(accessor);
|
|
134
|
-
|
|
135
123
|
exports.getAccessorValue = getAccessorValue;
|
|
@@ -5,25 +5,20 @@ Object.defineProperty(exports, "__esModule", {
|
|
|
5
5
|
});
|
|
6
6
|
exports.detectJestVersion = void 0;
|
|
7
7
|
let cachedJestVersion = null;
|
|
8
|
-
|
|
9
8
|
const detectJestVersion = () => {
|
|
10
9
|
if (cachedJestVersion) {
|
|
11
10
|
return cachedJestVersion;
|
|
12
11
|
}
|
|
13
|
-
|
|
14
12
|
try {
|
|
15
13
|
const jestPath = require.resolve('jest/package.json');
|
|
16
|
-
|
|
17
|
-
|
|
14
|
+
const jestPackageJson =
|
|
15
|
+
// eslint-disable-next-line @typescript-eslint/no-require-imports
|
|
18
16
|
require(jestPath);
|
|
19
|
-
|
|
20
17
|
if (jestPackageJson.version) {
|
|
21
18
|
const [majorVersion] = jestPackageJson.version.split('.');
|
|
22
19
|
return cachedJestVersion = parseInt(majorVersion, 10);
|
|
23
20
|
}
|
|
24
21
|
} catch {}
|
|
25
|
-
|
|
26
22
|
throw new Error('Unable to detect Jest version - please ensure jest package is installed, or otherwise set version explicitly');
|
|
27
23
|
};
|
|
28
|
-
|
|
29
24
|
exports.detectJestVersion = detectJestVersion;
|
|
@@ -4,11 +4,7 @@ Object.defineProperty(exports, "__esModule", {
|
|
|
4
4
|
value: true
|
|
5
5
|
});
|
|
6
6
|
exports.followTypeAssertionChain = void 0;
|
|
7
|
-
|
|
8
7
|
var _utils = require("@typescript-eslint/utils");
|
|
9
|
-
|
|
10
8
|
const isTypeCastExpression = node => node.type === _utils.AST_NODE_TYPES.TSAsExpression || node.type === _utils.AST_NODE_TYPES.TSTypeAssertion;
|
|
11
|
-
|
|
12
9
|
const followTypeAssertionChain = expression => isTypeCastExpression(expression) ? followTypeAssertionChain(expression.expression) : expression;
|
|
13
|
-
|
|
14
10
|
exports.followTypeAssertionChain = followTypeAssertionChain;
|
package/lib/rules/utils/index.js
CHANGED
|
@@ -3,9 +3,7 @@
|
|
|
3
3
|
Object.defineProperty(exports, "__esModule", {
|
|
4
4
|
value: true
|
|
5
5
|
});
|
|
6
|
-
|
|
7
6
|
var _accessors = require("./accessors");
|
|
8
|
-
|
|
9
7
|
Object.keys(_accessors).forEach(function (key) {
|
|
10
8
|
if (key === "default" || key === "__esModule") return;
|
|
11
9
|
if (key in exports && exports[key] === _accessors[key]) return;
|
|
@@ -16,9 +14,7 @@ Object.keys(_accessors).forEach(function (key) {
|
|
|
16
14
|
}
|
|
17
15
|
});
|
|
18
16
|
});
|
|
19
|
-
|
|
20
17
|
var _detectJestVersion = require("./detectJestVersion");
|
|
21
|
-
|
|
22
18
|
Object.keys(_detectJestVersion).forEach(function (key) {
|
|
23
19
|
if (key === "default" || key === "__esModule") return;
|
|
24
20
|
if (key in exports && exports[key] === _detectJestVersion[key]) return;
|
|
@@ -29,9 +25,7 @@ Object.keys(_detectJestVersion).forEach(function (key) {
|
|
|
29
25
|
}
|
|
30
26
|
});
|
|
31
27
|
});
|
|
32
|
-
|
|
33
28
|
var _followTypeAssertionChain = require("./followTypeAssertionChain");
|
|
34
|
-
|
|
35
29
|
Object.keys(_followTypeAssertionChain).forEach(function (key) {
|
|
36
30
|
if (key === "default" || key === "__esModule") return;
|
|
37
31
|
if (key in exports && exports[key] === _followTypeAssertionChain[key]) return;
|
|
@@ -42,9 +36,7 @@ Object.keys(_followTypeAssertionChain).forEach(function (key) {
|
|
|
42
36
|
}
|
|
43
37
|
});
|
|
44
38
|
});
|
|
45
|
-
|
|
46
39
|
var _misc = require("./misc");
|
|
47
|
-
|
|
48
40
|
Object.keys(_misc).forEach(function (key) {
|
|
49
41
|
if (key === "default" || key === "__esModule") return;
|
|
50
42
|
if (key in exports && exports[key] === _misc[key]) return;
|
|
@@ -55,9 +47,7 @@ Object.keys(_misc).forEach(function (key) {
|
|
|
55
47
|
}
|
|
56
48
|
});
|
|
57
49
|
});
|
|
58
|
-
|
|
59
50
|
var _parseJestFnCall = require("./parseJestFnCall");
|
|
60
|
-
|
|
61
51
|
Object.keys(_parseJestFnCall).forEach(function (key) {
|
|
62
52
|
if (key === "default" || key === "__esModule") return;
|
|
63
53
|
if (key in exports && exports[key] === _parseJestFnCall[key]) return;
|