@abaplint/core
Version:
abaplint - Core API
73 lines • 3.33 kB
JavaScript
;
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