summaryrefslogtreecommitdiffstats
path: root/vnfmarket/src/main/webapp/vnfmarket/node_modules/istanbul/lib/object-utils.js
diff options
context:
space:
mode:
Diffstat (limited to 'vnfmarket/src/main/webapp/vnfmarket/node_modules/istanbul/lib/object-utils.js')
-rw-r--r--vnfmarket/src/main/webapp/vnfmarket/node_modules/istanbul/lib/object-utils.js425
1 files changed, 0 insertions, 425 deletions
diff --git a/vnfmarket/src/main/webapp/vnfmarket/node_modules/istanbul/lib/object-utils.js b/vnfmarket/src/main/webapp/vnfmarket/node_modules/istanbul/lib/object-utils.js
deleted file mode 100644
index ab88ae0b..00000000
--- a/vnfmarket/src/main/webapp/vnfmarket/node_modules/istanbul/lib/object-utils.js
+++ /dev/null
@@ -1,425 +0,0 @@
-/*
- Copyright (c) 2012, Yahoo! Inc. All rights reserved.
- Copyrights licensed under the New BSD License. See the accompanying LICENSE file for terms.
- */
-
-/**
- * utility methods to process coverage objects. A coverage object has the following
- * format.
- *
- * {
- * "/path/to/file1.js": { file1 coverage },
- * "/path/to/file2.js": { file2 coverage }
- * }
- *
- * The internals of the file coverage object are intentionally not documented since
- * it is not a public interface.
- *
- * *Note:* When a method of this module has the word `File` in it, it will accept
- * one of the sub-objects of the main coverage object as an argument. Other
- * methods accept the higher level coverage object with multiple keys.
- *
- * Works on `node` as well as the browser.
- *
- * Usage on nodejs
- * ---------------
- *
- * var objectUtils = require('istanbul').utils;
- *
- * Usage in a browser
- * ------------------
- *
- * Load this file using a `script` tag or other means. This will set `window.coverageUtils`
- * to this module's exports.
- *
- * @class ObjectUtils
- * @module main
- * @static
- */
-(function (isNode) {
- /**
- * adds line coverage information to a file coverage object, reverse-engineering
- * it from statement coverage. The object passed in is updated in place.
- *
- * Note that if line coverage information is already present in the object,
- * it is not recomputed.
- *
- * @method addDerivedInfoForFile
- * @static
- * @param {Object} fileCoverage the coverage object for a single file
- */
- function addDerivedInfoForFile(fileCoverage) {
- var statementMap = fileCoverage.statementMap,
- statements = fileCoverage.s,
- lineMap;
-
- if (!fileCoverage.l) {
- fileCoverage.l = lineMap = {};
- Object.keys(statements).forEach(function (st) {
- var line = statementMap[st].start.line,
- count = statements[st],
- prevVal = lineMap[line];
- if (count === 0 && statementMap[st].skip) { count = 1; }
- if (typeof prevVal === 'undefined' || prevVal < count) {
- lineMap[line] = count;
- }
- });
- }
- }
- /**
- * adds line coverage information to all file coverage objects.
- *
- * @method addDerivedInfo
- * @static
- * @param {Object} coverage the coverage object
- */
- function addDerivedInfo(coverage) {
- Object.keys(coverage).forEach(function (k) {
- addDerivedInfoForFile(coverage[k]);
- });
- }
- /**
- * removes line coverage information from all file coverage objects
- * @method removeDerivedInfo
- * @static
- * @param {Object} coverage the coverage object
- */
- function removeDerivedInfo(coverage) {
- Object.keys(coverage).forEach(function (k) {
- delete coverage[k].l;
- });
- }
-
- function percent(covered, total) {
- var tmp;
- if (total > 0) {
- tmp = 1000 * 100 * covered / total + 5;
- return Math.floor(tmp / 10) / 100;
- } else {
- return 100.00;
- }
- }
-
- function computeSimpleTotals(fileCoverage, property, mapProperty) {
- var stats = fileCoverage[property],
- map = mapProperty ? fileCoverage[mapProperty] : null,
- ret = { total: 0, covered: 0, skipped: 0 };
-
- Object.keys(stats).forEach(function (key) {
- var covered = !!stats[key],
- skipped = map && map[key].skip;
- ret.total += 1;
- if (covered || skipped) {
- ret.covered += 1;
- }
- if (!covered && skipped) {
- ret.skipped += 1;
- }
- });
- ret.pct = percent(ret.covered, ret.total);
- return ret;
- }
-
- function computeBranchTotals(fileCoverage) {
- var stats = fileCoverage.b,
- branchMap = fileCoverage.branchMap,
- ret = { total: 0, covered: 0, skipped: 0 };
-
- Object.keys(stats).forEach(function (key) {
- var branches = stats[key],
- map = branchMap[key],
- covered,
- skipped,
- i;
- for (i = 0; i < branches.length; i += 1) {
- covered = branches[i] > 0;
- skipped = map.locations && map.locations[i] && map.locations[i].skip;
- if (covered || skipped) {
- ret.covered += 1;
- }
- if (!covered && skipped) {
- ret.skipped += 1;
- }
- }
- ret.total += branches.length;
- });
- ret.pct = percent(ret.covered, ret.total);
- return ret;
- }
- /**
- * returns a blank summary metrics object. A metrics object has the following
- * format.
- *
- * {
- * lines: lineMetrics,
- * statements: statementMetrics,
- * functions: functionMetrics,
- * branches: branchMetrics
- * linesCovered: lineCoveredCount
- * }
- *
- * Each individual metric object looks as follows:
- *
- * {
- * total: n,
- * covered: m,
- * pct: percent
- * }
- *
- * @method blankSummary
- * @static
- * @return {Object} a blank metrics object
- */
- function blankSummary() {
- return {
- lines: {
- total: 0,
- covered: 0,
- skipped: 0,
- pct: 'Unknown'
- },
- statements: {
- total: 0,
- covered: 0,
- skipped: 0,
- pct: 'Unknown'
- },
- functions: {
- total: 0,
- covered: 0,
- skipped: 0,
- pct: 'Unknown'
- },
- branches: {
- total: 0,
- covered: 0,
- skipped: 0,
- pct: 'Unknown'
- },
- linesCovered: {}
- };
- }
- /**
- * returns the summary metrics given the coverage object for a single file. See `blankSummary()`
- * to understand the format of the returned object.
- *
- * @method summarizeFileCoverage
- * @static
- * @param {Object} fileCoverage the coverage object for a single file.
- * @return {Object} the summary metrics for the file
- */
- function summarizeFileCoverage(fileCoverage) {
- var ret = blankSummary();
- addDerivedInfoForFile(fileCoverage);
- ret.lines = computeSimpleTotals(fileCoverage, 'l');
- ret.functions = computeSimpleTotals(fileCoverage, 'f', 'fnMap');
- ret.statements = computeSimpleTotals(fileCoverage, 's', 'statementMap');
- ret.branches = computeBranchTotals(fileCoverage);
- ret.linesCovered = fileCoverage.l;
- return ret;
- }
- /**
- * merges two instances of file coverage objects *for the same file*
- * such that the execution counts are correct.
- *
- * @method mergeFileCoverage
- * @static
- * @param {Object} first the first file coverage object for a given file
- * @param {Object} second the second file coverage object for the same file
- * @return {Object} an object that is a result of merging the two. Note that
- * the input objects are not changed in any way.
- */
- function mergeFileCoverage(first, second) {
- var ret = JSON.parse(JSON.stringify(first)),
- i;
-
- delete ret.l; //remove derived info
-
- Object.keys(second.s).forEach(function (k) {
- ret.s[k] += second.s[k];
- });
- Object.keys(second.f).forEach(function (k) {
- ret.f[k] += second.f[k];
- });
- Object.keys(second.b).forEach(function (k) {
- var retArray = ret.b[k],
- secondArray = second.b[k];
- for (i = 0; i < retArray.length; i += 1) {
- retArray[i] += secondArray[i];
- }
- });
-
- return ret;
- }
- /**
- * merges multiple summary metrics objects by summing up the `totals` and
- * `covered` fields and recomputing the percentages. This function is generic
- * and can accept any number of arguments.
- *
- * @method mergeSummaryObjects
- * @static
- * @param {Object} summary... multiple summary metrics objects
- * @return {Object} the merged summary metrics
- */
- function mergeSummaryObjects() {
- var ret = blankSummary(),
- args = Array.prototype.slice.call(arguments),
- keys = ['lines', 'statements', 'branches', 'functions'],
- increment = function (obj) {
- if (obj) {
- keys.forEach(function (key) {
- ret[key].total += obj[key].total;
- ret[key].covered += obj[key].covered;
- ret[key].skipped += obj[key].skipped;
- });
-
- // keep track of all lines we have coverage for.
- Object.keys(obj.linesCovered).forEach(function (key) {
- if (!ret.linesCovered[key]) {
- ret.linesCovered[key] = obj.linesCovered[key];
- } else {
- ret.linesCovered[key] += obj.linesCovered[key];
- }
- });
- }
- };
- args.forEach(function (arg) {
- increment(arg);
- });
- keys.forEach(function (key) {
- ret[key].pct = percent(ret[key].covered, ret[key].total);
- });
-
- return ret;
- }
- /**
- * returns the coverage summary for a single coverage object. This is
- * wrapper over `summarizeFileCoverage` and `mergeSummaryObjects` for
- * the common case of a single coverage object
- * @method summarizeCoverage
- * @static
- * @param {Object} coverage the coverage object
- * @return {Object} summary coverage metrics across all files in the coverage object
- */
- function summarizeCoverage(coverage) {
- var fileSummary = [];
- Object.keys(coverage).forEach(function (key) {
- fileSummary.push(summarizeFileCoverage(coverage[key]));
- });
- return mergeSummaryObjects.apply(null, fileSummary);
- }
-
- /**
- * makes the coverage object generated by this library yuitest_coverage compatible.
- * Note that this transformation is lossy since the returned object will not have
- * statement and branch coverage.
- *
- * @method toYUICoverage
- * @static
- * @param {Object} coverage The `istanbul` coverage object
- * @return {Object} a coverage object in `yuitest_coverage` format.
- */
- function toYUICoverage(coverage) {
- var ret = {};
-
- addDerivedInfo(coverage);
-
- Object.keys(coverage).forEach(function (k) {
- var fileCoverage = coverage[k],
- lines = fileCoverage.l,
- functions = fileCoverage.f,
- fnMap = fileCoverage.fnMap,
- o;
-
- o = ret[k] = {
- lines: {},
- calledLines: 0,
- coveredLines: 0,
- functions: {},
- calledFunctions: 0,
- coveredFunctions: 0
- };
- Object.keys(lines).forEach(function (k) {
- o.lines[k] = lines[k];
- o.coveredLines += 1;
- if (lines[k] > 0) {
- o.calledLines += 1;
- }
- });
- Object.keys(functions).forEach(function (k) {
- var name = fnMap[k].name + ':' + fnMap[k].line;
- o.functions[name] = functions[k];
- o.coveredFunctions += 1;
- if (functions[k] > 0) {
- o.calledFunctions += 1;
- }
- });
- });
- return ret;
- }
-
- /**
- * Creates new file coverage object with incremented hits count
- * on skipped statements, branches and functions
- *
- * @method incrementIgnoredTotals
- * @static
- * @param {Object} cov File coverage object
- * @return {Object} New file coverage object
- */
- function incrementIgnoredTotals(cov) {
- //TODO: This may be slow in the browser and may break in older browsers
- // Look into using a library that works in Node and the browser
- var fileCoverage = JSON.parse(JSON.stringify(cov));
-
- [
- {mapKey: 'statementMap', hitsKey: 's'},
- {mapKey: 'branchMap', hitsKey: 'b'},
- {mapKey: 'fnMap', hitsKey: 'f'}
- ].forEach(function (keys) {
- Object.keys(fileCoverage[keys.mapKey])
- .forEach(function (key) {
- var map = fileCoverage[keys.mapKey][key];
- var hits = fileCoverage[keys.hitsKey];
-
- if (keys.mapKey === 'branchMap') {
- var locations = map.locations;
-
- locations.forEach(function (location, index) {
- if (hits[key][index] === 0 && location.skip) {
- hits[key][index] = 1;
- }
- });
-
- return;
- }
-
- if (hits[key] === 0 && map.skip) {
- hits[key] = 1;
- }
- });
- });
-
- return fileCoverage;
- }
-
- var exportables = {
- addDerivedInfo: addDerivedInfo,
- addDerivedInfoForFile: addDerivedInfoForFile,
- removeDerivedInfo: removeDerivedInfo,
- blankSummary: blankSummary,
- summarizeFileCoverage: summarizeFileCoverage,
- summarizeCoverage: summarizeCoverage,
- mergeFileCoverage: mergeFileCoverage,
- mergeSummaryObjects: mergeSummaryObjects,
- toYUICoverage: toYUICoverage,
- incrementIgnoredTotals: incrementIgnoredTotals
- };
-
- /* istanbul ignore else: windows */
- if (isNode) {
- module.exports = exportables;
- } else {
- window.coverageUtils = exportables;
- }
-}(typeof module !== 'undefined' && typeof module.exports !== 'undefined' && typeof exports !== 'undefined'));