stryker
Version:
The extendable JavaScript mutation testing framework
86 lines • 3.84 kB
JavaScript
"use strict";
Object.defineProperty(exports, "__esModule", { value: true });
var tslib_1 = require("tslib");
var path = require("path");
var fileUtils_1 = require("../utils/fileUtils");
var util_1 = require("@stryker-mutator/util");
var plugin_1 = require("stryker-api/plugin");
var DEFAULT_BASE_FOLDER = 'reports/mutation/events';
var EventRecorderReporter = /** @class */ (function () {
function EventRecorderReporter(log, options) {
this.log = log;
this.options = options;
this.allWork = [];
this.index = 0;
this.createBaseFolderTask = fileUtils_1.cleanFolder(this.baseFolder);
}
Object.defineProperty(EventRecorderReporter.prototype, "baseFolder", {
get: function () {
if (!this._baseFolder) {
if (this.options.eventReporter && this.options.eventReporter.baseDir) {
this._baseFolder = this.options.eventReporter.baseDir;
this.log.debug("Using configured output folder " + this._baseFolder);
}
else {
this.log.debug("No base folder configuration found (using configuration: eventReporter: { baseDir: 'output/folder' }), using default " + DEFAULT_BASE_FOLDER);
this._baseFolder = DEFAULT_BASE_FOLDER;
}
}
return this._baseFolder;
},
enumerable: true,
configurable: true
});
EventRecorderReporter.prototype.writeToFile = function (methodName, data) {
var filename = path.join(this.baseFolder, this.format(this.index++) + "-" + methodName + ".json");
this.log.debug("Writing event " + methodName + " to file " + filename);
return util_1.fsAsPromised.writeFile(filename, JSON.stringify(data), { encoding: 'utf8' });
};
EventRecorderReporter.prototype.format = function (input) {
var str = input.toString();
for (var i = 10000; i > 1; i = i / 10) {
if (i > input) {
str = '0' + str;
}
}
return str;
};
EventRecorderReporter.prototype.work = function (eventName, data) {
var _this = this;
this.allWork.push(this.createBaseFolderTask.then(function () { return _this.writeToFile(eventName, data); }));
};
EventRecorderReporter.prototype.onSourceFileRead = function (file) {
this.work('onSourceFileRead', file);
};
EventRecorderReporter.prototype.onAllSourceFilesRead = function (files) {
this.work('onAllSourceFilesRead', files);
};
EventRecorderReporter.prototype.onAllMutantsMatchedWithTests = function (results) {
this.work('onAllMutantsMatchedWithTests', results);
};
EventRecorderReporter.prototype.onMutantTested = function (result) {
this.work('onMutantTested', result);
};
EventRecorderReporter.prototype.onScoreCalculated = function (score) {
this.work('onScoreCalculated', score);
};
EventRecorderReporter.prototype.onAllMutantsTested = function (results) {
this.work('onAllMutantsTested', results);
};
EventRecorderReporter.prototype.wrapUp = function () {
return tslib_1.__awaiter(this, void 0, void 0, function () {
return tslib_1.__generator(this, function (_a) {
switch (_a.label) {
case 0: return [4 /*yield*/, this.createBaseFolderTask];
case 1:
_a.sent();
return [2 /*return*/, Promise.all(this.allWork)];
}
});
});
};
EventRecorderReporter.inject = plugin_1.tokens(plugin_1.commonTokens.logger, plugin_1.commonTokens.options);
return EventRecorderReporter;
}());
exports.default = EventRecorderReporter;
//# sourceMappingURL=EventRecorderReporter.js.map