"use strict";
var SourceFileTreeNode_1 = require('./SourceFileTreeNode');
var path = require('path');
var log4js = require('log4js');
var util = require('./util');
var log = log4js.getLogger('HtmlReporter');
var DEFAULT_BASE_FOLDER = 'reports/mutation/html';
var HtmlReporter = (function () {
function HtmlReporter(options) {
this.options = options;
this.rootNode = new SourceFileTreeNode_1.default('/');
log4js.setGlobalLogLevel(options.logLevel || 'info');
}
HtmlReporter.prototype.onAllSourceFilesRead = function (files) {
var _this = this;
files.forEach(function (f) { return _this.rootNode.addSourceFile(f); });
};
HtmlReporter.prototype.onAllMutantsTested = function (results) {
var _this = this;
results.forEach(function (r) { return _this.rootNode.addMutantResult(r); });
this.generateReport();
};
HtmlReporter.prototype.generateReport = function () {
var _this = this;
this.rootNode.normalizeNames();
this.mainPromise = this.cleanBaseFolder().then(function () { return _this.writeCommonResources(); }).then(function () {
_this.writeReport();
});
};
HtmlReporter.prototype.writeBootstrapAndHighlightResources = function () {
var resourcesDir = path.join(__dirname, '..', 'resources');
return util.copyFolder(resourcesDir, this.baseFolder);
};
HtmlReporter.prototype.writeStrykerResources = function () {
var resourcesDir = path.join(__dirname, 'resources', 'stryker');
return util.copyFolder(resourcesDir, this.baseFolder);
};
HtmlReporter.prototype.writeCommonResources = function () {
return Promise.all([this.writeStrykerResources(), this.writeBootstrapAndHighlightResources()]);
};
HtmlReporter.prototype.writeReport = function () {
this.rootNode.calculateModel('');
this.rootNode.writeReportNodeRecursive(this.baseFolder);
};
Object.defineProperty(HtmlReporter.prototype, "baseFolder", {
get: function () {
if (!this._baseFolder) {
Eif (this.options['htmlReporter'] && this.options['htmlReporter']['baseDir']) {
this._baseFolder = this.options['htmlReporter']['baseDir'];
log.debug("Using configured output folder " + this._baseFolder);
}
else {
log.debug("No base folder configuration found (using configuration: htmlReporter: { baseDir: 'output/folder' }), using default " + DEFAULT_BASE_FOLDER);
this._baseFolder = DEFAULT_BASE_FOLDER;
}
}
return this._baseFolder;
},
enumerable: true,
configurable: true
});
HtmlReporter.prototype.cleanBaseFolder = function () {
var _this = this;
return util.deleteDir(this.baseFolder).then(function () { return util.mkdirRecursive(_this.baseFolder); });
};
HtmlReporter.prototype.wrapUp = function () {
return this.mainPromise;
};
return HtmlReporter;
}());
Object.defineProperty(exports, "__esModule", { value: true });
exports.default = HtmlReporter;
//# sourceMappingURL=HtmlReporter.js.map |