You're Invited: Meet the Socket team at BSidesSF and RSAC - April 27 - May 1.RSVP
Socket
Sign inDemoInstall
Socket

coverage-istanbul

Package Overview
Dependencies
Maintainers
1
Versions
4
Alerts
File Explorer

Advanced tools

Socket logo

Install Socket

Detect and block malicious and high-risk dependencies

Install

coverage-istanbul - npm Package Compare versions

Comparing version

to
1.1.0

.eslintignore

155

lib/index.js

@@ -1,82 +0,17 @@

'use strict';
var fs = require('fs');
var istanbul = require('istanbul');
var glob = require('glob');
var libCoverage = require('istanbul-lib-coverage');
var mapStore = require('istanbul-lib-source-maps').createSourceMapStore({});
function getTreeSummary(collector) {
var summarizer = new istanbul.TreeSummarizer();
collector.files().forEach(function (key) {
summarizer.addFileCoverageSummary(key, istanbul.utils.summarizeFileCoverage(collector.fileCoverageFor(key)));
});
return summarizer.getTreeSummary();
}
function getPathMap(treeSummary) {
var ret = {};
function walker(node) {
ret[node.fullPath()] = node;
node.children.forEach(function (child) {
walker(child);
});
}
walker(treeSummary.root);
return ret;
}
"use strict";
var __importDefault = (this && this.__importDefault) || function (mod) {
return (mod && mod.__esModule) ? mod : { "default": mod };
};
Object.defineProperty(exports, "__esModule", { value: true });
exports.createE2ECoverage = void 0;
const fs_1 = __importDefault(require("fs"));
// eslint-disable-next-line @typescript-eslint/ban-ts-comment
// @ts-ignore
const istanbul_1 = __importDefault(require("istanbul"));
const glob_1 = __importDefault(require("glob"));
const istanbul_lib_coverage_1 = __importDefault(require("istanbul-lib-coverage"));
const istanbul_lib_source_maps_1 = __importDefault(require("istanbul-lib-source-maps"));
const util_1 = require("./util");
const mapStore = istanbul_lib_source_maps_1.default.createSourceMapStore({});
/**
* 合并不同的覆盖率文件,并生成新的结果
*
* @param {Object} obj 要追加的覆盖率信息
* @param {Object} coverage 历史累积的覆盖率信息
* @return {Object} 新累积的覆盖率信息
*/
function mergeClientCoverage(obj) {
var coverage = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};
if (!obj) {
return;
}
Object.keys(obj).forEach(function (filePath) {
var original = coverage[filePath];
var existResult = obj[filePath];
var result = void 0;
if (original) {
result = istanbul.utils.mergeFileCoverage(original, existResult);
} else {
result = existResult;
}
coverage[filePath] = result;
});
return coverage;
}
function getCoverageInfo(collector) {
var treeSummary = getTreeSummary(collector);
var pathMap = getPathMap(treeSummary);
var filePath = treeSummary.root.fullPath();
var outputNode = pathMap[filePath];
return {
lines: outputNode.metrics.lines.pct,
statements: outputNode.metrics.statements.pct,
functions: outputNode.metrics.functions.pct,
branches: outputNode.metrics.branches.pct
};
}
/**
* 生成覆盖率结果

@@ -88,11 +23,8 @@ *

*/
function createE2ECoverage(globPattern) {
var opts = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};
return new Promise(function (resolve, reject) {
var collector = new istanbul.Collector();
var coverage = void 0;
function createE2ECoverage(globPattern, opts) {
return new Promise((resolve, reject) => {
const collector = new istanbul_1.default.Collector();
let coverage;
// options is optional
glob(globPattern, {}, function (err, files) {
glob_1.default(globPattern, {}, function (err, files) {
// console.log(files);

@@ -102,33 +34,30 @@ if (err) {

}
// 如果没有过滤出文件,则返回错误
if (!files || !files.length) {
return reject(new Error('Not exist files by pattern=' + globPattern));
return reject(new Error(`Not exist files by pattern=${globPattern}`));
}
// 合并不同的覆盖率生产物
files.forEach(function (file) {
var fileData = JSON.parse(fs.readFileSync(file));
coverage = mergeClientCoverage(fileData, coverage);
files.forEach(file => {
// eslint-disable-next-line @typescript-eslint/ban-ts-comment
// @ts-ignore
const fileData = JSON.parse(fs_1.default.readFileSync(file));
coverage = util_1.mergeClientCoverage(fileData, coverage);
});
// console.log(coverage)
var coverageMap = libCoverage.createCoverageMap(coverage);
var transformed = mapStore.transformCoverage(coverageMap).then(function (result) {
const coverageMap = istanbul_lib_coverage_1.default.createCoverageMap(coverage);
const transformed = mapStore
.transformCoverage(coverageMap)
.then(result => {
// console.log(JSON.stringify(transformed['map']));
// console.log(JSON.parse(JSON.stringify(result)))
var final_coverage = JSON.parse(JSON.stringify(result));
const final_coverage = JSON.parse(JSON.stringify(result));
// 追加
collector.add(final_coverage);
// 获取关键信息
var coverageInfo = getCoverageInfo(collector);
const coverageInfo = util_1.getCoverageInfo(collector);
// console.log(coverageInfo);
// 输出产物
var sync = true;
var reporter = new istanbul.Reporter();
reporter.dir = opts.dir || './coverage';
const sync = true;
const reporter = new istanbul_1.default.Reporter();
reporter.dir = (opts === null || opts === void 0 ? void 0 : opts.dir) || './coverage';
reporter.add('lcovonly');

@@ -140,14 +69,16 @@ reporter.addAll(['clover', 'cobertura', 'html']);

data: coverageInfo,
reporterDir: reporter.dir
reporterDir: reporter.dir,
});
});
}).catch(function (err) {
})
.catch(err => {
reject(err);
});
// console.log(transformed)
if (process.env.DEBUG) {
console.log('--', typeof transformed);
}
});
});
}
module.exports = {
createE2ECoverage: createE2ECoverage
};
exports.createE2ECoverage = createE2ECoverage;
{
"name": "coverage-istanbul",
"version": "1.0.0",
"version": "1.1.0",
"description": "istanbul tools for test coverage",

@@ -8,3 +8,7 @@ "main": "lib/index.js",

"prepublishOnly": "npm run build",
"build": "babel ./src --out-dir ./lib"
"build": "tsc -d",
"test": "npm run test:unit",
"test:unit": "mocha 'test/**/*.test.{ts,tsx}'",
"test:cover": "nyc npm run test:unit",
"lint": "eslint . --ext .ts"
},

@@ -26,2 +30,3 @@ "repository": {

"dependencies": {
"fs-extra": "^9.0.1",
"glob": "^7.1.6",

@@ -34,6 +39,22 @@ "istanbul": "^0.4.5",

"devDependencies": {
"babel-cli": "^6.26.0",
"babel-core": "^6.26.3",
"babel-preset-env": "^1.7.0"
"@babel/types": "^7.10.2",
"@types/chai": "^4.2.12",
"@types/expect": "^24.3.0",
"@types/fs-extra": "^9.0.1",
"@types/glob": "^7.1.1",
"@types/istanbul-lib-coverage": "^2.0.3",
"@types/istanbul-lib-source-maps": "^4.0.1",
"@types/lodash": "^4.14.153",
"@types/mocha": "^8.0.3",
"@types/node": "^14.0.5",
"@typescript-eslint/eslint-plugin": "^3.7.0",
"@typescript-eslint/parser": "^3.7.0",
"chai": "^4.2.0",
"eslint": "^7.5.0",
"mocha": "^8.1.3",
"nyc": "^15.1.0",
"prettier": "^2.0.5",
"ts-node": "^9.0.0",
"typescript": "^3.9.3"
}
}