all files / src/ HtmlReporter.js

96.3% Statements 52/54
87.5% Branches 7/8
100% Functions 17/17
96% Lines 48/50
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73    38×   1125×                 15×             15×                
"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