diff options
Diffstat (limited to 'node_modules/istanbul-reports/lib/lcovonly')
| -rw-r--r-- | node_modules/istanbul-reports/lib/lcovonly/index.js | 77 | 
1 files changed, 77 insertions, 0 deletions
diff --git a/node_modules/istanbul-reports/lib/lcovonly/index.js b/node_modules/istanbul-reports/lib/lcovonly/index.js new file mode 100644 index 0000000..0720e46 --- /dev/null +++ b/node_modules/istanbul-reports/lib/lcovonly/index.js @@ -0,0 +1,77 @@ +/* + Copyright 2012-2015, Yahoo Inc. + Copyrights licensed under the New BSD License. See the accompanying LICENSE file for terms. + */ +'use strict'; +const { ReportBase } = require('istanbul-lib-report'); + +class LcovOnlyReport extends ReportBase { +    constructor(opts) { +        super(); +        opts = opts || {}; +        this.file = opts.file || 'lcov.info'; +        this.projectRoot = opts.projectRoot || process.cwd(); +        this.contentWriter = null; +    } + +    onStart(root, context) { +        this.contentWriter = context.writer.writeFile(this.file); +    } + +    onDetail(node) { +        const fc = node.getFileCoverage(); +        const writer = this.contentWriter; +        const functions = fc.f; +        const functionMap = fc.fnMap; +        const lines = fc.getLineCoverage(); +        const branches = fc.b; +        const branchMap = fc.branchMap; +        const summary = node.getCoverageSummary(); +        const path = require('path'); + +        writer.println('TN:'); +        const fileName = path.relative(this.projectRoot, fc.path); +        writer.println('SF:' + fileName); + +        Object.values(functionMap).forEach(meta => { +            // Some versions of the instrumenter in the wild populate 'loc' +            // but not 'decl': +            const decl = meta.decl || meta.loc; +            writer.println('FN:' + [decl.start.line, meta.name].join(',')); +        }); +        writer.println('FNF:' + summary.functions.total); +        writer.println('FNH:' + summary.functions.covered); + +        Object.entries(functionMap).forEach(([key, meta]) => { +            const stats = functions[key]; +            writer.println('FNDA:' + [stats, meta.name].join(',')); +        }); + +        Object.entries(lines).forEach(entry => { +            writer.println('DA:' + entry.join(',')); +        }); +        writer.println('LF:' + summary.lines.total); +        writer.println('LH:' + summary.lines.covered); + +        Object.entries(branches).forEach(([key, branchArray]) => { +            const meta = branchMap[key]; +            if (meta) { +                const { line } = meta.loc.start; +                branchArray.forEach((b, i) => { +                    writer.println('BRDA:' + [line, key, i, b].join(',')); +                }); +            } else { +                console.warn('Missing coverage entries in', fileName, key); +            } +        }); +        writer.println('BRF:' + summary.branches.total); +        writer.println('BRH:' + summary.branches.covered); +        writer.println('end_of_record'); +    } + +    onEnd() { +        this.contentWriter.close(); +    } +} + +module.exports = LcovOnlyReport;  | 
