stryker
Version:
The extendable JavaScript mutation testing framework
74 lines • 3.72 kB
JavaScript
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
;