UNPKG

@microsoft.azure/autorest.testserver

Version:
130 lines 4.4 kB
"use strict"; 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