ts-jest
Version:
A preprocessor with sourcemap support to help use Typescript with Jest
78 lines • 8.35 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
var path = require("path");
var fs = require("fs");
var includes = require("lodash.includes");
var partition = require("lodash.partition");
var loadCoverage = require('remap-istanbul/lib/loadCoverage');
var remap = require('remap-istanbul/lib/remap');
var writeReport = require('remap-istanbul/lib/writeReport');
var istanbulInstrument = require('istanbul-lib-instrument');
var pickBy = require("lodash.pickby");
var utils_1 = require("./utils");
var glob = require('glob-all');
function processResult(result) {
var root = require('jest-util').getPackageRoot();
var jestConfig = utils_1.getJestConfig(root).config;
var sourceCache = {};
var coveredFiles = [];
var basepath = path.join(jestConfig.cacheDirectory, '/ts-jest/');
if (!fs.existsSync(basepath)) {
fs.mkdirSync(basepath);
}
var cachedFiles = fs.readdirSync(basepath);
cachedFiles.map(function (p) {
var filename = new Buffer(p.replace(basepath, ''), 'base64').toString('utf8');
filename = root + filename;
coveredFiles.push(filename);
sourceCache[filename] = fs.readFileSync(path.join(basepath, p), 'ascii');
});
if (!jestConfig.testResultsProcessor)
return result;
var coverageConfig = {
collectCoverage: jestConfig.collectCoverage ? jestConfig.collectCoverage : true,
coverageDirectory: jestConfig.coverageDirectory ? jestConfig.coverageDirectory : './coverage/',
coverageReporters: jestConfig.coverageReporters
};
var coverageCollectFiles = coverageConfig.collectCoverage &&
jestConfig.testResultsProcessor &&
jestConfig.collectCoverageFrom &&
jestConfig.collectCoverageFrom.length ?
glob.sync(jestConfig.collectCoverageFrom).map(function (x) { return path.resolve(root, x); }) : [];
if (!coverageConfig.collectCoverage)
return result;
var coverage;
try {
coverage = [pickBy(result.coverageMap.data, function (_, fileName) { return includes(coveredFiles, fileName); })];
}
catch (e) {
return result;
}
var uncoveredFiles = partition(coverageCollectFiles, function (x) { return includes(coveredFiles, x); })[1];
var coverageOutputPath = path.join(coverageConfig.coverageDirectory || 'coverage', 'remapped');
var emptyCoverage = uncoveredFiles.map(function (x) {
var ret = {};
if (sourceCache[x]) {
var instrumenter = istanbulInstrument.createInstrumenter();
instrumenter.instrumentSync(sourceCache[x], x);
ret[x] = instrumenter.fileCoverage;
}
return ret;
});
var mergedCoverage = loadCoverage(coverage.concat(emptyCoverage), { readJSON: function (t) { return t ? t : {}; } });
var coverageCollector = remap(mergedCoverage, {
readFile: function (x) {
var key = path.normalize(x);
var source = sourceCache[key];
delete sourceCache[key];
return source;
}
});
writeReport(coverageCollector, 'html', {}, path.join(coverageOutputPath, 'html'));
writeReport(coverageCollector, 'lcovonly', {}, path.join(coverageOutputPath, 'lcov.info'));
writeReport(coverageCollector, 'json', {}, path.join(coverageOutputPath, 'coverage.json'));
writeReport(coverageCollector, 'text', {}, path.join(coverageOutputPath, 'coverage.txt'));
return result;
}
module.exports = processResult;
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY292ZXJhZ2Vwcm9jZXNzb3IuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi9zcmMvY292ZXJhZ2Vwcm9jZXNzb3IudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7QUFBQSwyQkFBNkI7QUFDN0IsdUJBQXlCO0FBQ3pCLDBDQUE2QztBQUM3Qyw0Q0FBK0M7QUFDL0MsSUFBTSxZQUFZLEdBQUcsT0FBTyxDQUFDLGlDQUFpQyxDQUFDLENBQUM7QUFDaEUsSUFBTSxLQUFLLEdBQUcsT0FBTyxDQUFDLDBCQUEwQixDQUFDLENBQUM7QUFDbEQsSUFBTSxXQUFXLEdBQUcsT0FBTyxDQUFDLGdDQUFnQyxDQUFDLENBQUM7QUFDOUQsSUFBTSxrQkFBa0IsR0FBRyxPQUFPLENBQUMseUJBQXlCLENBQUMsQ0FBQztBQUM5RCxzQ0FBeUM7QUFDekMsaUNBQXdDO0FBQ3hDLElBQU0sSUFBSSxHQUFHLE9BQU8sQ0FBQyxVQUFVLENBQUMsQ0FBQztBQXNCakMsdUJBQXVCLE1BQWM7SUFDbkMsSUFBTSxJQUFJLEdBQUcsT0FBTyxDQUFDLFdBQVcsQ0FBQyxDQUFDLGNBQWMsRUFBRSxDQUFDO0lBQ25ELElBQU0sVUFBVSxHQUFHLHFCQUFhLENBQUMsSUFBSSxDQUFDLENBQUMsTUFBTSxDQUFDO0lBQzlDLElBQUksV0FBVyxHQUFHLEVBQUUsQ0FBQztJQUNyQixJQUFJLFlBQVksR0FBRyxFQUFFLENBQUM7SUFFdEIsSUFBSSxRQUFRLEdBQUcsSUFBSSxDQUFDLElBQUksQ0FBQyxVQUFVLENBQUMsY0FBYyxFQUFFLFdBQVcsQ0FBQyxDQUFDO0lBQ2pFLEVBQUUsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLFVBQVUsQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDLENBQUM7UUFDN0IsRUFBRSxDQUFDLFNBQVMsQ0FBQyxRQUFRLENBQUMsQ0FBQztJQUN6QixDQUFDO0lBQ0QsSUFBSSxXQUFXLEdBQUcsRUFBRSxDQUFDLFdBQVcsQ0FBQyxRQUFRLENBQUMsQ0FBQztJQUMz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