@microsoft.azure/autorest.testserver
Version:
Autorest test server.
130 lines • 4.4 kB
JavaScript
;
var __importDefault = (this && this.__importDefault) || function (mod) {
return (mod && mod.__esModule) ? mod : { "default": mod };
};
Object.defineProperty(exports, "__esModule", { value: true });
exports.coverageService = exports.CoverageService = void 0;
const fs_1 = __importDefault(require("fs"));
const path_1 = require("path");
const logger_1 = require("../logger");
const utils_1 = require("../utils");
class CoverageService {
constructor() {
this.coverageDirectory = "./coverage";
this.coverage = {
defaultCategoryName: {},
};
}
getAllForCategory(category) {
var _a;
return (_a = this.coverage[category]) !== null && _a !== void 0 ? _a : {};
}
/**
* Track usage of a scenario.
* @param category Category for the coverage
* @param name Name of the scenario.
* @param value {Optional} For legacy test set the value of the usage.
*/
async track(category, name) {
let map = this.coverage[category];
if (!map) {
map = this.coverage[category] = {};
}
if (!(name in map)) {
map[name] = 0;
}
map[name] += 1;
await this.saveCoverage(category);
}
/**
* For LEGACY test only.
* @deprecated
*/
legacyTrack(category, name, value) {
let map = this.coverage[category];
if (!map) {
map = this.coverage[category] = {};
}
if (!(name in map)) {
map[name] = 0;
}
if (value > map[name]) {
map[name] = value;
}
this.legacySaveCoverage(category);
}
register(category, name) {
let map = this.coverage[category];
if (!map) {
map = this.coverage[category] = {};
}
if (name in map) {
throw new Error(`Name '${name}' already exists in category '${category}' make sure it is unique.`);
}
map[name] = 0;
}
reset() {
for (const categoryMap of Object.values(this.coverage)) {
for (const name of Object.keys(categoryMap)) {
categoryMap[name] = 0;
}
}
}
init(coverageDirectory, loadExisting = false) {
this.coverageDirectory = coverageDirectory;
if (loadExisting) {
this.loadExistingCoverages();
}
}
async saveCoverage(category) {
const categoryMap = this.coverage[category];
await (0, utils_1.ensureDir)(this.coverageDirectory);
const path = this.getReportPath(category);
try {
await fs_1.default.promises.writeFile(path, JSON.stringify(categoryMap, null, 2));
}
catch (e) {
logger_1.logger.warn("Error while saving coverage", e);
}
}
legacySaveCoverage(category) {
const categoryMap = this.coverage[category];
fs_1.default.mkdirSync(this.coverageDirectory, { recursive: true });
const path = this.getReportPath(category);
try {
fs_1.default.writeFileSync(path, JSON.stringify(categoryMap, null, 2));
}
catch (e) {
logger_1.logger.warn("Error while saving coverage", e);
}
}
loadExistingCoverages() {
const categories = ["vanilla", "azure", "optional", "dpg"];
for (const category of categories) {
this.loadExistingCoverage(category);
}
}
loadExistingCoverage(category) {
const path = this.getReportPath(category);
try {
if (!fs_1.default.existsSync(path)) {
logger_1.logger.warn(`Coverage for category '${category}' doesn't exists yet(File '${path}' is not found)`);
return;
}
const content = fs_1.default.readFileSync(path);
const data = JSON.parse(content.toString());
for (const [key, value] of Object.entries(data)) {
this.coverage[category][key] = value;
}
}
catch (e) {
logger_1.logger.warn("Error while loading existing coverage", e);
}
}
getReportPath(category) {
return (0, path_1.join)(this.coverageDirectory, `report-${category}.json`);
}
}
exports.CoverageService = CoverageService;
exports.coverageService = new CoverageService();
//# sourceMappingURL=coverage-service.js.map