UNPKG

direct-dev

Version:
49 lines (40 loc) 1.9 kB
'use strict'; /** [empty-test-result](https://github.com/direct-adv-interfaces/direct-dev/TECHS.md#empty-test-result) */ var require2 = require('../utils/require2'); var vow = require2('enb/node_modules/vow', 'vow'); var vowFs = require2('enb/node_modules/vow-fs', 'vow-fs'); var buildFlow = require('enb/lib/build-flow'); var istanbul = require('istanbul'); var BlockFilter = require('../utils/block-filter'); function createEmptyResultString(coverage) { var now = new Date(); return JSON.stringify({ result: { stats: { suites: 0, tests: 0, passes: 0, pending: 0, failures: 0, start: now, end: now, duration: 0 }, tests: [], pending: [], failures: [], passes: [] }, coverage: coverage }, null, 2); } var withCoverage = buildFlow.create().name('empty-test-result').target('target', '?.test-result.json').defineOption('filter').useFileList('js').builder(function (paths) { var filter = this.getOption('filter', BlockFilter.empty); return vow.all(paths.filter(filter.enb).map(function (file) { return vowFs.read(file.fullname, 'utf8').then(function (content) { var instrumenter = new istanbul.Instrumenter({ embedSource: true }); instrumenter.instrumentSync(content, file.fullname); return instrumenter.lastFileCoverage(); }); })).then(function (coverages) { return createEmptyResultString(coverages.reduce(function (resultCoverage, coverage) { resultCoverage[coverage.path] = coverage; return resultCoverage; }, {})); }); }).createTech(); var noCoverage = buildFlow.create().name('empty-test-result').target('target', '?.test-result.json').builder(createEmptyResultString).createTech(); module.exports = function (needCoverage) { return needCoverage ? withCoverage : noCoverage; };