UNPKG

stryker

Version:
74 lines 3.72 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); var tslib_1 = require("tslib"); var _ = require("lodash"); var util_1 = require("@stryker-mutator/util"); var prettier_1 = require("prettier"); var plugin_1 = require("stryker-api/plugin"); var _1 = require("."); var STRYKER_CONFIG_FILE = 'stryker.conf.js'; var StrykerConfigWriter = /** @class */ (function () { function StrykerConfigWriter(log, out) { this.log = log; this.out = out; } StrykerConfigWriter.prototype.guardForExistingConfig = function () { if (util_1.fsAsPromised.existsSync(STRYKER_CONFIG_FILE)) { var msg = 'Stryker config file "stryker.conf.js" already exists in the current directory. Please remove it and try again.'; this.log.error(msg); throw new Error(msg); } }; /** * Create stryker.conf.js based on the chosen framework and test runner * @function */ StrykerConfigWriter.prototype.write = function (selectedTestRunner, selectedTestFramework, selectedMutator, selectedTranspilers, selectedReporters, selectedPackageManager, additionalPiecesOfConfig) { var configObject = { mutator: selectedMutator ? selectedMutator.name : '', packageManager: selectedPackageManager.name, reporters: selectedReporters.map(function (rep) { return rep.name; }), testRunner: selectedTestRunner ? selectedTestRunner.name : '', transpilers: selectedTranspilers ? selectedTranspilers.map(function (t) { return t.name; }) : [] }; this.configureTestFramework(configObject, selectedTestFramework); _.assign.apply(_, [configObject].concat(additionalPiecesOfConfig)); return this.writeStrykerConfig(configObject); }; /** * Create stryker.conf.js based on the chosen preset * @function */ StrykerConfigWriter.prototype.writePreset = function (presetConfig) { return tslib_1.__awaiter(this, void 0, void 0, function () { return tslib_1.__generator(this, function (_a) { return [2 /*return*/, this.writeStrykerConfigRaw(presetConfig.config, "// This config was generated using a preset.\n // Please see the handbook for more information: " + presetConfig.handbookUrl)]; }); }); }; StrykerConfigWriter.prototype.configureTestFramework = function (configObject, selectedTestFramework) { if (selectedTestFramework) { configObject.testFramework = selectedTestFramework.name; configObject.coverageAnalysis = 'perTest'; } else { configObject.coverageAnalysis = 'all'; } }; StrykerConfigWriter.prototype.writeStrykerConfigRaw = function (rawConfig, rawHeader) { if (rawHeader === void 0) { rawHeader = ''; } this.out('Writing stryker.conf.js...'); var formattedConf = prettier_1.format(rawHeader + "\n module.exports = function(config){\n config.set(\n " + rawConfig + "\n );\n }", { parser: 'babel' }); return util_1.fsAsPromised.writeFile(STRYKER_CONFIG_FILE, formattedConf); }; StrykerConfigWriter.prototype.writeStrykerConfig = function (configObject) { return this.writeStrykerConfigRaw(this.wrapInModule(configObject)); }; StrykerConfigWriter.prototype.wrapInModule = function (configObject) { return JSON.stringify(configObject, null, 2); }; StrykerConfigWriter.inject = plugin_1.tokens(plugin_1.commonTokens.logger, _1.initializerTokens.out); return StrykerConfigWriter; }()); exports.default = StrykerConfigWriter; //# sourceMappingURL=StrykerConfigWriter.js.map