UNPKG

@lcov-viewer/istanbul-report

Version:

Istanbul grouped HTML report. Generates code coverage report grouped by directory.

2 lines (1 loc) 1.56 kB
"use strict";const e=require("fs"),t=require("path"),{ReportBase:r}=require("istanbul-lib-report"),i=({lines:e,functions:t,branches:r})=>({lines:{total:e.total,covered:e.covered},functions:{total:t.total,covered:t.covered},branches:{total:r.total,covered:r.covered}}),s={".js":"/* eslint-disable */\n"};module.exports=class extends r{constructor(e){super(),this.subdir=e.subdir||"lcov-viewer",this.verbose=e.verbose,this.srcDir=t.resolve(__dirname,"assets")}getWriter(e){return this.subdir?e.writer.writerForDir(this.subdir):e.writer}onStart(r,i){this.writer=this.getWriter(i),this.collectedData={},this.reportDataWriter=this.writer.writeFile("report-data.js");const a=this;e.readdirSync(a.srcDir).forEach((e=>{const r=t.resolve(a.srcDir,e),i=`./${e}`;a.verbose&&console.log(`Write asset: ${i}`),a.writer.copyFile(r,i,s[t.extname(e)])}))}onDetail(e,t){const r=e.getQualifiedName(),s=e.getCoverageSummary();this.collectedData[r]={metrics:i(s),path:r,filename:e.getRelativeName(),details:{lines:void 0,branchCoverage:void 0,branchMap:void 0}};const a=e.getFileCoverage(),o=t.getSource(a.path),c=a.getLineCoverage();this.collectedData[r].details.branchCoverage=a.b,this.collectedData[r].details.branchMap=a.branchMap,c&&(this.collectedData[r].details.lines=o.split(/\r?\n|\r/).map(((e,t)=>{const r=t+1;return{line:r,hits:c[r.toString()]||0,text:e}})))}onEnd(){this.reportDataWriter.write(`window.REPORT_DATE = '${(new Date).toString()}';`),this.reportDataWriter.write(`window.COVERAGE_DATA = ${JSON.stringify(this.collectedData)};`),this.reportDataWriter.close()}};