12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091929394 |
- "use strict";
- Object.defineProperty(exports, "__esModule", { value: true });
- exports.RULE_NAME = void 0;
- const utils_1 = require("@typescript-eslint/utils");
- const create_testing_library_rule_1 = require("../create-testing-library-rule");
- const node_utils_1 = require("../node-utils");
- exports.RULE_NAME = 'no-manual-cleanup';
- const CLEANUP_LIBRARY_REGEXP = /(@testing-library\/(preact|react|svelte|vue))|@marko\/testing-library/;
- exports.default = (0, create_testing_library_rule_1.createTestingLibraryRule)({
- name: exports.RULE_NAME,
- meta: {
- type: 'problem',
- docs: {
- description: 'Disallow the use of `cleanup`',
- recommendedConfig: {
- dom: false,
- angular: false,
- react: false,
- vue: false,
- marko: false,
- },
- },
- messages: {
- noManualCleanup: "`cleanup` is performed automatically by your test runner, you don't need manual cleanups.",
- },
- schema: [],
- },
- defaultOptions: [],
- create(context, _, helpers) {
- function reportImportReferences(references) {
- for (const reference of references) {
- const utilsUsage = reference.identifier.parent;
- if (utilsUsage &&
- (0, node_utils_1.isMemberExpression)(utilsUsage) &&
- utils_1.ASTUtils.isIdentifier(utilsUsage.property) &&
- utilsUsage.property.name === 'cleanup') {
- context.report({
- node: utilsUsage.property,
- messageId: 'noManualCleanup',
- });
- }
- }
- }
- function reportCandidateModule(moduleNode) {
- if ((0, node_utils_1.isImportDeclaration)(moduleNode)) {
- if ((0, node_utils_1.isImportDefaultSpecifier)(moduleNode.specifiers[0])) {
- const { references } = context.getDeclaredVariables(moduleNode)[0];
- reportImportReferences(references);
- }
- const cleanupSpecifier = moduleNode.specifiers.find((specifier) => (0, node_utils_1.isImportSpecifier)(specifier) &&
- specifier.imported.name === 'cleanup');
- if (cleanupSpecifier) {
- context.report({
- node: cleanupSpecifier,
- messageId: 'noManualCleanup',
- });
- }
- }
- else {
- const declaratorNode = moduleNode.parent;
- if ((0, node_utils_1.isObjectPattern)(declaratorNode.id)) {
- const cleanupProperty = declaratorNode.id.properties.find((property) => (0, node_utils_1.isProperty)(property) &&
- utils_1.ASTUtils.isIdentifier(property.key) &&
- property.key.name === 'cleanup');
- if (cleanupProperty) {
- context.report({
- node: cleanupProperty,
- messageId: 'noManualCleanup',
- });
- }
- }
- else {
- const references = (0, node_utils_1.getVariableReferences)(context, declaratorNode);
- reportImportReferences(references);
- }
- }
- }
- return {
- 'Program:exit'() {
- const testingLibraryImportName = helpers.getTestingLibraryImportName();
- const testingLibraryImportNode = helpers.getTestingLibraryImportNode();
- const customModuleImportNode = helpers.getCustomModuleImportNode();
- if (testingLibraryImportName &&
- testingLibraryImportNode &&
- testingLibraryImportName.match(CLEANUP_LIBRARY_REGEXP)) {
- reportCandidateModule(testingLibraryImportNode);
- }
- if (customModuleImportNode) {
- reportCandidateModule(customModuleImportNode);
- }
- },
- };
- },
- });
|