UNPKG

@abaplint/core

Version:
73 lines 3.33 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.LocalTestclassConsistency = exports.LocalTestclassConsistencyConf = void 0; const issue_1 = require("../issue"); const _abap_rule_1 = require("./_abap_rule"); const _basic_rule_config_1 = require("./_basic_rule_config"); const objects_1 = require("../objects"); const _irule_1 = require("./_irule"); const version_1 = require("../version"); class LocalTestclassConsistencyConf extends _basic_rule_config_1.BasicRuleConfig { } exports.LocalTestclassConsistencyConf = LocalTestclassConsistencyConf; class LocalTestclassConsistency extends _abap_rule_1.ABAPRule { constructor() { super(...arguments); this.conf = new LocalTestclassConsistencyConf(); } getMetadata() { return { key: "local_testclass_consistency", title: "Local testclass consistency", shortDescription: `Checks that local test classes are placed in the test include, and class unit test flag is set`, tags: [_irule_1.RuleTag.Syntax], }; } getConfig() { return this.conf; } setConfig(conf) { this.conf = conf; } runParsed(file, obj) { var _a, _b, _c; const issues = []; if (this.reg.getConfig().getVersion() === version_1.Version.v700) { // 700 does not have testclass includes return []; } if (!(obj instanceof objects_1.Class)) { return []; } for (const c of file.getInfo().listClassDefinitions()) { if (c.isLocal && c.isForTesting && !file.getFilename().includes(".testclasses.abap")) { const message = "Place local testclass \"" + c.name + "\" in the testclass include"; const issue = issue_1.Issue.atIdentifier(c.identifier, message, this.getMetadata().key, this.conf.severity); issues.push(issue); } } if (file.getFilename().includes(".testclasses.") === true && obj.getTestclassFile() !== undefined && ((_a = obj.getXML()) === null || _a === void 0 ? void 0 : _a.includes("<WITH_UNIT_TESTS>X</WITH_UNIT_TESTS>")) === false) { const id = obj.getIdentifier(); if (id) { const message = "Has testclass, but XML does not set <WITH_UNIT_TESTS>"; const issue = issue_1.Issue.atIdentifier(id, message, this.getMetadata().key, this.conf.severity); issues.push(issue); } } if (file.getFilename() === ((_b = obj.getMainABAPFile()) === null || _b === void 0 ? void 0 : _b.getFilename()) && obj.getTestclassFile() === undefined && ((_c = obj.getXML()) === null || _c === void 0 ? void 0 : _c.includes("<WITH_UNIT_TESTS>X</WITH_UNIT_TESTS>")) === true) { const id = obj.getIdentifier(); if (id) { const message = "Has <WITH_UNIT_TESTS> set in XML, but no testclasses"; const issue = issue_1.Issue.atIdentifier(id, message, this.getMetadata().key, this.conf.severity); issues.push(issue); } } return issues; } } exports.LocalTestclassConsistency = LocalTestclassConsistency; //# sourceMappingURL=local_testclass_consistency.js.map