eslint-plugin-jest 26.8.7 → 27.1.6
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 +82 -78
- package/docs/rules/consistent-test-it.md +9 -4
- package/docs/rules/expect-expect.md +5 -0
- package/docs/rules/max-expects.md +3 -1
- package/docs/rules/max-nested-describe.md +3 -1
- package/docs/rules/no-alias-methods.md +13 -2
- package/docs/rules/no-commented-out-tests.md +6 -1
- package/docs/rules/no-conditional-expect.md +7 -2
- package/docs/rules/no-conditional-in-test.md +3 -1
- package/docs/rules/no-deprecated-functions.md +14 -7
- package/docs/rules/no-disabled-tests.md +6 -1
- package/docs/rules/no-done-callback.md +9 -1
- package/docs/rules/no-duplicate-hooks.md +3 -1
- package/docs/rules/no-export.md +6 -1
- package/docs/rules/no-focused-tests.md +10 -1
- package/docs/rules/no-hooks.md +3 -1
- package/docs/rules/no-identical-title.md +6 -1
- package/docs/rules/no-if.md +4 -4
- package/docs/rules/no-interpolation-in-snapshots.md +6 -1
- package/docs/rules/no-jasmine-globals.md +10 -2
- package/docs/rules/no-large-snapshots.md +4 -2
- package/docs/rules/no-mocks-import.md +6 -1
- package/docs/rules/no-restricted-jest-methods.md +51 -0
- package/docs/rules/no-restricted-matchers.md +19 -4
- package/docs/rules/no-standalone-expect.md +6 -1
- package/docs/rules/no-test-prefixes.md +9 -1
- package/docs/rules/no-test-return-statement.md +2 -0
- package/docs/rules/prefer-called-with.md +2 -0
- package/docs/rules/prefer-comparison-matcher.md +5 -0
- package/docs/rules/prefer-each.md +56 -0
- package/docs/rules/prefer-equality-matcher.md +5 -0
- package/docs/rules/prefer-expect-assertions.md +5 -2
- package/docs/rules/prefer-expect-resolves.md +8 -1
- package/docs/rules/prefer-hooks-in-order.md +3 -1
- package/docs/rules/prefer-hooks-on-top.md +3 -1
- package/docs/rules/prefer-lowercase-title.md +5 -0
- package/docs/rules/prefer-mock-promise-shorthand.md +6 -1
- package/docs/rules/prefer-snapshot-hint.md +2 -0
- package/docs/rules/prefer-spy-on.md +5 -2
- package/docs/rules/prefer-strict-equal.md +5 -2
- package/docs/rules/prefer-to-be.md +8 -0
- package/docs/rules/prefer-to-contain.md +8 -2
- package/docs/rules/prefer-to-have-length.md +8 -2
- package/docs/rules/prefer-todo.md +5 -2
- package/docs/rules/require-hook.md +2 -0
- package/docs/rules/require-to-throw-message.md +2 -2
- package/docs/rules/require-top-level-describe.md +5 -1
- package/docs/rules/unbound-method.md +7 -2
- package/docs/rules/valid-describe-callback.md +6 -1
- package/docs/rules/valid-expect-in-promise.md +6 -1
- package/docs/rules/valid-expect.md +5 -2
- package/docs/rules/valid-title.md +9 -1
- package/lib/index.js +14 -25
- package/lib/processors/snapshot-processor.js +3 -5
- package/lib/rules/consistent-test-it.js +1 -19
- package/lib/rules/expect-expect.js +1 -18
- package/lib/rules/max-expects.js +0 -16
- package/lib/rules/max-nested-describe.js +0 -13
- package/lib/rules/no-alias-methods.js +1 -10
- package/lib/rules/no-commented-out-tests.js +0 -10
- package/lib/rules/no-conditional-expect.js +2 -23
- 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 +3 -19
- package/lib/rules/no-done-callback.js +20 -47
- package/lib/rules/no-duplicate-hooks.js +0 -12
- package/lib/rules/no-export.js +0 -12
- package/lib/rules/no-focused-tests.js +1 -17
- 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 +1 -23
- package/lib/rules/no-large-snapshots.js +4 -24
- package/lib/rules/no-mocks-import.js +0 -12
- package/lib/rules/no-restricted-jest-methods.js +56 -0
- package/lib/rules/no-restricted-matchers.js +13 -28
- 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 +80 -0
- package/lib/rules/prefer-equality-matcher.js +12 -25
- package/lib/rules/prefer-expect-assertions.js +14 -60
- 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 +8 -34
- package/lib/rules/prefer-spy-on.js +0 -17
- package/lib/rules/prefer-strict-equal.js +1 -11
- package/lib/rules/prefer-to-be.js +12 -37
- 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 +1 -25
- package/lib/rules/require-to-throw-message.js +0 -9
- package/lib/rules/require-top-level-describe.js +1 -18
- package/lib/rules/unbound-method.js +3 -30
- 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 +14 -47
- package/lib/rules/utils/parseJestFnCall.js +51 -154
- package/lib/rules/valid-describe-callback.js +0 -17
- package/lib/rules/valid-expect-in-promise.js +28 -95
- package/lib/rules/valid-expect.js +5 -48
- package/lib/rules/valid-title.js +5 -40
- package/package.json +20 -16
- package/docs/rules/no-jest-import.md +0 -20
- package/lib/rules/no-jest-import.js +0 -48
package/lib/rules/valid-title.js
CHANGED
|
@@ -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
|
-
const trimFXprefix = word => ['f', 'x'].includes(word.charAt(0)) ? word.substr(1) : word;
|
|
13
|
-
|
|
9
|
+
const trimFXprefix = word => ['f', 'x'].includes(word.charAt(0)) ? word.substring(1) : word;
|
|
14
10
|
const doesBinaryExpressionContainStringNode = binaryExp => {
|
|
15
11
|
if ((0, _utils2.isStringNode)(binaryExp.right)) {
|
|
16
12
|
return true;
|
|
17
13
|
}
|
|
18
|
-
|
|
19
14
|
if (binaryExp.left.type === _utils.AST_NODE_TYPES.BinaryExpression) {
|
|
20
15
|
return doesBinaryExpressionContainStringNode(binaryExp.left);
|
|
21
16
|
}
|
|
22
|
-
|
|
23
17
|
return (0, _utils2.isStringNode)(binaryExp.left);
|
|
24
18
|
};
|
|
25
|
-
|
|
26
19
|
const quoteStringValue = node => node.type === _utils.AST_NODE_TYPES.TemplateLiteral ? `\`${node.quasis[0].value.raw}\`` : node.raw;
|
|
27
|
-
|
|
28
20
|
const compileMatcherPattern = matcherMaybeWithMessage => {
|
|
29
21
|
const [matcher, message] = Array.isArray(matcherMaybeWithMessage) ? matcherMaybeWithMessage : [matcherMaybeWithMessage];
|
|
30
22
|
return [new RegExp(matcher, 'u'), message];
|
|
31
23
|
};
|
|
32
|
-
|
|
33
24
|
const compileMatcherPatterns = matchers => {
|
|
34
25
|
if (typeof matchers === 'string' || Array.isArray(matchers)) {
|
|
35
26
|
const compiledMatcher = compileMatcherPattern(matchers);
|
|
@@ -39,14 +30,12 @@ const compileMatcherPatterns = matchers => {
|
|
|
39
30
|
it: compiledMatcher
|
|
40
31
|
};
|
|
41
32
|
}
|
|
42
|
-
|
|
43
33
|
return {
|
|
44
34
|
describe: matchers.describe ? compileMatcherPattern(matchers.describe) : null,
|
|
45
35
|
test: matchers.test ? compileMatcherPattern(matchers.test) : null,
|
|
46
36
|
it: matchers.it ? compileMatcherPattern(matchers.it) : null
|
|
47
37
|
};
|
|
48
38
|
};
|
|
49
|
-
|
|
50
39
|
const MatcherAndMessageSchema = {
|
|
51
40
|
type: 'array',
|
|
52
41
|
items: {
|
|
@@ -56,7 +45,6 @@ const MatcherAndMessageSchema = {
|
|
|
56
45
|
maxItems: 2,
|
|
57
46
|
additionalItems: false
|
|
58
47
|
};
|
|
59
|
-
|
|
60
48
|
var _default = (0, _utils2.createRule)({
|
|
61
49
|
name: __filename,
|
|
62
50
|
meta: {
|
|
@@ -116,7 +104,6 @@ var _default = (0, _utils2.createRule)({
|
|
|
116
104
|
ignoreTypeOfDescribeName: false,
|
|
117
105
|
disallowedWords: []
|
|
118
106
|
}],
|
|
119
|
-
|
|
120
107
|
create(context, [{
|
|
121
108
|
ignoreTypeOfDescribeName,
|
|
122
109
|
disallowedWords = [],
|
|
@@ -124,41 +111,31 @@ var _default = (0, _utils2.createRule)({
|
|
|
124
111
|
mustMatch
|
|
125
112
|
}]) {
|
|
126
113
|
const disallowedWordsRegexp = new RegExp(`\\b(${disallowedWords.join('|')})\\b`, 'iu');
|
|
127
|
-
const mustNotMatchPatterns = compileMatcherPatterns(mustNotMatch
|
|
128
|
-
const mustMatchPatterns = compileMatcherPatterns(mustMatch
|
|
114
|
+
const mustNotMatchPatterns = compileMatcherPatterns(mustNotMatch ?? {});
|
|
115
|
+
const mustMatchPatterns = compileMatcherPatterns(mustMatch ?? {});
|
|
129
116
|
return {
|
|
130
117
|
CallExpression(node) {
|
|
131
|
-
var _mustNotMatchPatterns, _mustMatchPatterns$je;
|
|
132
|
-
|
|
133
118
|
const jestFnCall = (0, _utils2.parseJestFnCall)(node, context);
|
|
134
|
-
|
|
135
119
|
if ((jestFnCall === null || jestFnCall === void 0 ? void 0 : jestFnCall.type) !== 'describe' && (jestFnCall === null || jestFnCall === void 0 ? void 0 : jestFnCall.type) !== 'test') {
|
|
136
120
|
return;
|
|
137
121
|
}
|
|
138
|
-
|
|
139
122
|
const [argument] = node.arguments;
|
|
140
|
-
|
|
141
123
|
if (!argument) {
|
|
142
124
|
return;
|
|
143
125
|
}
|
|
144
|
-
|
|
145
126
|
if (!(0, _utils2.isStringNode)(argument)) {
|
|
146
127
|
if (argument.type === _utils.AST_NODE_TYPES.BinaryExpression && doesBinaryExpressionContainStringNode(argument)) {
|
|
147
128
|
return;
|
|
148
129
|
}
|
|
149
|
-
|
|
150
130
|
if (argument.type !== _utils.AST_NODE_TYPES.TemplateLiteral && !(ignoreTypeOfDescribeName && jestFnCall.type === 'describe')) {
|
|
151
131
|
context.report({
|
|
152
132
|
messageId: 'titleMustBeString',
|
|
153
133
|
loc: argument.loc
|
|
154
134
|
});
|
|
155
135
|
}
|
|
156
|
-
|
|
157
136
|
return;
|
|
158
137
|
}
|
|
159
|
-
|
|
160
138
|
const title = (0, _utils2.getStringValue)(argument);
|
|
161
|
-
|
|
162
139
|
if (!title) {
|
|
163
140
|
context.report({
|
|
164
141
|
messageId: 'emptyTitle',
|
|
@@ -169,10 +146,8 @@ var _default = (0, _utils2.createRule)({
|
|
|
169
146
|
});
|
|
170
147
|
return;
|
|
171
148
|
}
|
|
172
|
-
|
|
173
149
|
if (disallowedWords.length > 0) {
|
|
174
150
|
const disallowedMatch = disallowedWordsRegexp.exec(title);
|
|
175
|
-
|
|
176
151
|
if (disallowedMatch) {
|
|
177
152
|
context.report({
|
|
178
153
|
data: {
|
|
@@ -184,7 +159,6 @@ var _default = (0, _utils2.createRule)({
|
|
|
184
159
|
return;
|
|
185
160
|
}
|
|
186
161
|
}
|
|
187
|
-
|
|
188
162
|
if (title.trim().length !== title.length) {
|
|
189
163
|
context.report({
|
|
190
164
|
messageId: 'accidentalSpace',
|
|
@@ -192,10 +166,8 @@ var _default = (0, _utils2.createRule)({
|
|
|
192
166
|
fix: fixer => [fixer.replaceTextRange(argument.range, quoteStringValue(argument).replace(/^([`'"]) +?/u, '$1').replace(/ +?([`'"])$/u, '$1'))]
|
|
193
167
|
});
|
|
194
168
|
}
|
|
195
|
-
|
|
196
169
|
const unprefixedName = trimFXprefix(jestFnCall.name);
|
|
197
170
|
const [firstWord] = title.split(' ');
|
|
198
|
-
|
|
199
171
|
if (firstWord.toLowerCase() === unprefixedName) {
|
|
200
172
|
context.report({
|
|
201
173
|
messageId: 'duplicatePrefix',
|
|
@@ -203,10 +175,8 @@ var _default = (0, _utils2.createRule)({
|
|
|
203
175
|
fix: fixer => [fixer.replaceTextRange(argument.range, quoteStringValue(argument).replace(/^([`'"]).+? /u, '$1'))]
|
|
204
176
|
});
|
|
205
177
|
}
|
|
206
|
-
|
|
207
178
|
const jestFunctionName = unprefixedName;
|
|
208
|
-
const [mustNotMatchPattern, mustNotMatchMessage] =
|
|
209
|
-
|
|
179
|
+
const [mustNotMatchPattern, mustNotMatchMessage] = mustNotMatchPatterns[jestFunctionName] ?? [];
|
|
210
180
|
if (mustNotMatchPattern) {
|
|
211
181
|
if (mustNotMatchPattern.test(title)) {
|
|
212
182
|
context.report({
|
|
@@ -221,9 +191,7 @@ var _default = (0, _utils2.createRule)({
|
|
|
221
191
|
return;
|
|
222
192
|
}
|
|
223
193
|
}
|
|
224
|
-
|
|
225
|
-
const [mustMatchPattern, mustMatchMessage] = (_mustMatchPatterns$je = mustMatchPatterns[jestFunctionName]) !== null && _mustMatchPatterns$je !== void 0 ? _mustMatchPatterns$je : [];
|
|
226
|
-
|
|
194
|
+
const [mustMatchPattern, mustMatchMessage] = mustMatchPatterns[jestFunctionName] ?? [];
|
|
227
195
|
if (mustMatchPattern) {
|
|
228
196
|
if (!mustMatchPattern.test(title)) {
|
|
229
197
|
context.report({
|
|
@@ -239,10 +207,7 @@ var _default = (0, _utils2.createRule)({
|
|
|
239
207
|
}
|
|
240
208
|
}
|
|
241
209
|
}
|
|
242
|
-
|
|
243
210
|
};
|
|
244
211
|
}
|
|
245
|
-
|
|
246
212
|
});
|
|
247
|
-
|
|
248
213
|
exports.default = _default;
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "eslint-plugin-jest",
|
|
3
|
-
"version": "
|
|
3
|
+
"version": "27.1.6",
|
|
4
4
|
"description": "ESLint rules for Jest",
|
|
5
5
|
"keywords": [
|
|
6
6
|
"eslint",
|
|
@@ -29,7 +29,7 @@
|
|
|
29
29
|
"prettier:write": "prettier --write 'docs/**/*.md' README.md '.github/**' package.json tsconfig.json src/globals.json .yarnrc.yml",
|
|
30
30
|
"postpublish": "pinst --enable",
|
|
31
31
|
"test": "jest",
|
|
32
|
-
"tools:regenerate-docs": "
|
|
32
|
+
"tools:regenerate-docs": "yarn prepack && eslint-doc-generator && yarn prettier:write",
|
|
33
33
|
"typecheck": "tsc -p ."
|
|
34
34
|
},
|
|
35
35
|
"commitlint": {
|
|
@@ -103,34 +103,38 @@
|
|
|
103
103
|
"@babel/core": "^7.4.4",
|
|
104
104
|
"@babel/preset-env": "^7.4.4",
|
|
105
105
|
"@babel/preset-typescript": "^7.3.3",
|
|
106
|
-
"@commitlint/cli": "^
|
|
107
|
-
"@commitlint/config-conventional": "^
|
|
106
|
+
"@commitlint/cli": "^17.0.3",
|
|
107
|
+
"@commitlint/config-conventional": "^17.0.3",
|
|
108
108
|
"@schemastore/package": "^0.0.6",
|
|
109
109
|
"@semantic-release/changelog": "^6.0.0",
|
|
110
110
|
"@semantic-release/git": "^10.0.0",
|
|
111
|
+
"@tsconfig/node14": "^1.0.3",
|
|
111
112
|
"@types/dedent": "^0.7.0",
|
|
112
|
-
"@types/
|
|
113
|
-
"@types/
|
|
113
|
+
"@types/eslint": "^8.4.6",
|
|
114
|
+
"@types/jest": "^29.0.0",
|
|
115
|
+
"@types/node": "^14.18.26",
|
|
114
116
|
"@types/prettier": "^2.0.0",
|
|
115
117
|
"@typescript-eslint/eslint-plugin": "^5.0.0",
|
|
116
118
|
"@typescript-eslint/parser": "^5.0.0",
|
|
117
|
-
"babel-jest": "^
|
|
119
|
+
"babel-jest": "^29.0.0",
|
|
118
120
|
"babel-plugin-replace-ts-export-assignment": "^0.0.2",
|
|
119
121
|
"dedent": "^0.7.0",
|
|
120
122
|
"eslint": "^6.0.0 || ^7.0.0 || ^8.0.0",
|
|
121
123
|
"eslint-config-prettier": "^8.3.0",
|
|
124
|
+
"eslint-doc-generator": "^0.26.0",
|
|
122
125
|
"eslint-plugin-eslint-comments": "^3.1.2",
|
|
123
|
-
"eslint-plugin-eslint-plugin": "^
|
|
126
|
+
"eslint-plugin-eslint-plugin": "^5.0.6",
|
|
124
127
|
"eslint-plugin-import": "^2.25.1",
|
|
125
128
|
"eslint-plugin-node": "^11.0.0",
|
|
126
|
-
"eslint-plugin-prettier": "^
|
|
129
|
+
"eslint-plugin-prettier": "^4.2.1",
|
|
127
130
|
"eslint-remote-tester": "^3.0.0",
|
|
128
131
|
"eslint-remote-tester-repositories": "~0.0.5",
|
|
129
|
-
"husky": "^
|
|
132
|
+
"husky": "^8.0.1",
|
|
130
133
|
"is-ci": "^3.0.0",
|
|
131
|
-
"jest": "^
|
|
132
|
-
"jest-runner-eslint": "^1.
|
|
133
|
-
"lint-staged": "^
|
|
134
|
+
"jest": "^29.0.0",
|
|
135
|
+
"jest-runner-eslint": "^1.1.0",
|
|
136
|
+
"lint-staged": "^13.0.3",
|
|
137
|
+
"markdown-link-check": "^3.10.2",
|
|
134
138
|
"pinst": "^3.0.0",
|
|
135
139
|
"prettier": "^2.0.5",
|
|
136
140
|
"rimraf": "^3.0.0",
|
|
@@ -141,7 +145,7 @@
|
|
|
141
145
|
},
|
|
142
146
|
"peerDependencies": {
|
|
143
147
|
"@typescript-eslint/eslint-plugin": "^5.0.0",
|
|
144
|
-
"eslint": "^
|
|
148
|
+
"eslint": "^7.0.0 || ^8.0.0"
|
|
145
149
|
},
|
|
146
150
|
"peerDependenciesMeta": {
|
|
147
151
|
"@typescript-eslint/eslint-plugin": {
|
|
@@ -151,8 +155,8 @@
|
|
|
151
155
|
"optional": true
|
|
152
156
|
}
|
|
153
157
|
},
|
|
154
|
-
"packageManager": "yarn@3.
|
|
158
|
+
"packageManager": "yarn@3.3.0",
|
|
155
159
|
"engines": {
|
|
156
|
-
"node": "^
|
|
160
|
+
"node": "^14.15.0 || ^16.10.0 || >=18.0.0"
|
|
157
161
|
}
|
|
158
162
|
}
|
|
@@ -1,20 +0,0 @@
|
|
|
1
|
-
# Disallow importing Jest (`no-jest-import`)
|
|
2
|
-
|
|
3
|
-
The `jest` object is automatically in scope within every test file. The methods
|
|
4
|
-
in the `jest` object help create mocks and let you control Jest's overall
|
|
5
|
-
behavior. It is therefore completely unnecessary to import in `jest`, as Jest
|
|
6
|
-
doesn't export anything in the first place.
|
|
7
|
-
|
|
8
|
-
### Rule details
|
|
9
|
-
|
|
10
|
-
This rule reports on any importing of Jest.
|
|
11
|
-
|
|
12
|
-
To name a few: `var jest = require('jest');` `const jest = require('jest');`
|
|
13
|
-
`import jest from 'jest';` `import {jest as test} from 'jest';`
|
|
14
|
-
|
|
15
|
-
There is no correct usage of this code, other than to not import `jest` in the
|
|
16
|
-
first place.
|
|
17
|
-
|
|
18
|
-
## Further Reading
|
|
19
|
-
|
|
20
|
-
- [The Jest Object](https://facebook.github.io/jest/docs/en/jest-object.html)
|
|
@@ -1,48 +0,0 @@
|
|
|
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
|
-
type: 'problem',
|
|
14
|
-
docs: {
|
|
15
|
-
description: 'Disallow importing Jest',
|
|
16
|
-
category: 'Best Practices',
|
|
17
|
-
recommended: 'error'
|
|
18
|
-
},
|
|
19
|
-
messages: {
|
|
20
|
-
unexpectedImport: `Jest is automatically in scope. Do not import "jest", as Jest doesn't export anything.`
|
|
21
|
-
},
|
|
22
|
-
schema: []
|
|
23
|
-
},
|
|
24
|
-
defaultOptions: [],
|
|
25
|
-
|
|
26
|
-
create(context) {
|
|
27
|
-
return {
|
|
28
|
-
'ImportDeclaration[source.value="jest"]'(node) {
|
|
29
|
-
context.report({
|
|
30
|
-
node,
|
|
31
|
-
messageId: 'unexpectedImport'
|
|
32
|
-
});
|
|
33
|
-
},
|
|
34
|
-
|
|
35
|
-
'CallExpression[callee.name="require"][arguments.0.value="jest"]'(node) {
|
|
36
|
-
context.report({
|
|
37
|
-
loc: node.arguments[0].loc,
|
|
38
|
-
messageId: 'unexpectedImport',
|
|
39
|
-
node
|
|
40
|
-
});
|
|
41
|
-
}
|
|
42
|
-
|
|
43
|
-
};
|
|
44
|
-
}
|
|
45
|
-
|
|
46
|
-
});
|
|
47
|
-
|
|
48
|
-
exports.default = _default;
|