Summary
File |
Based on all code |
Based on code coverage |
Stryker.js |
|
62/64 |
96% |
62/64 |
Code
'use strict';
var _ = require('lodash');
var MutatorOrchestrator_1 = require('./MutatorOrchestrator');
var config_1 = require('stryker-api/config');
var TestRunnerOrchestrator_1 = require('./TestRunnerOrchestrator');
var ReporterOrchestrator_1 = require('./ReporterOrchestrator');
require('./jasmine_test_selector/JasmineTestSelector');
var test_runner_1 = require('stryker-api/test_runner');
var TestSelectorOrchestrator_1 = require('./TestSelectorOrchestrator');
var MutantRunResultMatcher_1 = require('./MutantRunResultMatcher');
var InputFileResolver_1 = require('./InputFileResolver');
var ConfigReader_1 = require('./ConfigReader');
var PluginLoader_1 = require('./PluginLoader');
var objectUtils_1 = require('./utils/objectUtils');
var StrykerTempFolder_1 = require('./utils/StrykerTempFolder');
var log4js = require('log4js');
var log = log4js.getLogger('Stryker');
var Stryker = (function () 0{
}{
function Stryker(options) 1{
}{
var configReader = new ConfigReader_1.default(options);
this.config = configReader.readConfig();
this.setGlobalLogLevel();
this.loadPlugins();
this.applyConfigWriters();
this.setGlobalLogLevel();
this.freezeConfig();
}
Stryker.prototype.runMutationTest = function () 2{
}{
var _this = this;
var reporter = new ReporterOrchestrator_1.default(this.config).createBroadcastReporter();
var testSelector = new TestSelectorOrchestrator_1.default(this.config).determineTestSelector();
return new InputFileResolver_1.default(this.config.mutate, this.config.files).resolve()
.then(function (inputFiles) 3{
}{
var testRunnerOrchestrator = new TestRunnerOrchestrator_1.default(_this.config, inputFiles, testSelector, reporter);
return testRunnerOrchestrator.initialRun().then(function (runResults) 4{
}{ return ({ runResults: runResults, inputFiles: inputFiles, testRunnerOrchestrator: testRunnerOrchestrator }); });
})
.then(function (tuple) 5{
}{
var runResults = tuple.runResults;
var inputFiles = tuple.inputFiles;
var testRunnerOrchestrator = tuple.testRunnerOrchestrator;
var unsuccessfulTests = _this.filterOutUnsuccesfulResults(runResults);
if (6unsuccessfulTests.length !== 07true8falseunsuccessfulTests.length === 0) 9{
}{
_this.logInitialTestRunSucceeded(runResults);
var mutatorOrchestrator = new MutatorOrchestrator_1.default(reporter);
var mutants = mutatorOrchestrator.generateMutants(inputFiles
.filter(function (inputFile) 10{
}{ return inputFile.mutated; })
.map(function (file) 11{
}{ return file.path; }));
log.info(12mutants.length - ' Mutant(s) generated'mutants.length + " Mutant(s) generated");
var mutantRunResultMatcher = new MutantRunResultMatcher_1.default(mutants, runResults);
mutantRunResultMatcher.matchWithMutants();
return testRunnerOrchestrator.runMutations(mutants);
}
else 13{
}{
_this.logFailedTests(unsuccessfulTests);
throw new Error('There were failed tests in the initial test run');
}
}).then(function (mutantResults) 14{
}{
var maybePromise = reporter.wrapUp();
if (15true16falseobjectUtils_1.isPromise(maybePromise)) 17{
}{
return maybePromise.then(function () 18{
}{ return mutantResults; });
}
else 19{
}{
return mutantResults;
}
}).then(function (mutantResults) 20{
}{ return StrykerTempFolder_1.default.clean().then(function () 21{
}{ return mutantResults; }); });
};
Stryker.prototype.filterOutUnsuccesfulResults = function (runResults) 22{
}{
return runResults.filter(function (runResult) 23{
}{ return !(24!runResult.failed || runResult.result === test_runner_1.TestResult.Complete!runResult.failed && 25runResult.result !== test_runner_1.TestResult.CompleterunResult.result === test_runner_1.TestResult.Complete); });
};
Stryker.prototype.loadPlugins = function () 26{
}{
if (27true28falsethis.config.plugins) 29{
}{
new PluginLoader_1.default(this.config.plugins).load();
}
};
Stryker.prototype.applyConfigWriters = function () 30{
}{
var _this = this;
config_1.ConfigWriterFactory.instance().knownNames().forEach(function (configWriterName) 31{
}{
config_1.ConfigWriterFactory.instance().create(configWriterName, undefined).write(_this.config);
});
};
Stryker.prototype.freezeConfig = function () 32{
}{
objectUtils_1.freezeRecursively(this.config);
if (33true34falselog.isDebugEnabled()) 35{
}{
log.debug(36'Using config: ' - JSON.stringify(this.config)"Using config: " + JSON.stringify(this.config));
}
};
Stryker.prototype.logInitialTestRunSucceeded = function (runResults) 37{
}{
var totalAmountOfTests = 0;
runResults.forEach(function (result) 38{
}{
if (39true40falseresult.succeeded) 41{
}{
totalAmountOfTests += result.succeeded;
}
});
log.info('Initial test run succeeded. Ran %s tests.', totalAmountOfTests);
};
Stryker.prototype.setGlobalLogLevel = function () 42{
}{
log4js.setGlobalLogLevel(this.config.logLevel);
};
Stryker.prototype.logFailedTests = function (unsuccessfulTests) 43{
}{
var failedSpecNames = _.uniq(_.flatten(unsuccessfulTests
.filter(function (runResult) 44{
}{ return 45runResult.result !== test_runner_1.TestResult.CompleterunResult.result === test_runner_1.TestResult.Complete; })
.map(function (runResult) 46{
}{ return runResult.testNames; })))
.sort();
if (47failedSpecNames.length <= 048failedSpecNames.length >= 049true50falsefailedSpecNames.length > 0) 51{
}{
var message_1 = 'One or more tests failed in the inial test run:';
failedSpecNames.forEach(function (filename) 52{
}{ return message_1 += 53'\n\t' - filename"\n\t" + filename; });
log.error(message_1);
}
var errors = _.flatten(unsuccessfulTests
.filter(function (runResult) 54{
}{ return 55runResult.result !== test_runner_1.TestResult.ErrorrunResult.result === test_runner_1.TestResult.Error; })
.map(function (runResult) 56{
}{ return runResult.errorMessages; }))
.sort();
if (57errors.length <= 058errors.length >= 059true60falseerrors.length > 0) 61{
}{
var message_2 = 'One or more tests errored in the initial test run:';
errors.forEach(function (error) 62{
}{ return message_2 += 63'\n\t' - error"\n\t" + error; });
log.error(message_2);
}
};
return Stryker;
}());
Object.defineProperty(exports, "__esModule", { value: true });
exports.default = Stryker;
//# sourceMappingURL=Stryker.js.map