aboutsummaryrefslogtreecommitdiffstats
path: root/vnfmarket/src/main/webapp/vnfmarket/node_modules/istanbul/lib/collector.js
diff options
context:
space:
mode:
Diffstat (limited to 'vnfmarket/src/main/webapp/vnfmarket/node_modules/istanbul/lib/collector.js')
-rw-r--r--vnfmarket/src/main/webapp/vnfmarket/node_modules/istanbul/lib/collector.js122
1 files changed, 122 insertions, 0 deletions
diff --git a/vnfmarket/src/main/webapp/vnfmarket/node_modules/istanbul/lib/collector.js b/vnfmarket/src/main/webapp/vnfmarket/node_modules/istanbul/lib/collector.js
new file mode 100644
index 00000000..f1b6b606
--- /dev/null
+++ b/vnfmarket/src/main/webapp/vnfmarket/node_modules/istanbul/lib/collector.js
@@ -0,0 +1,122 @@
+/*
+ Copyright (c) 2012, Yahoo! Inc. All rights reserved.
+ Copyrights licensed under the New BSD License. See the accompanying LICENSE file for terms.
+ */
+"use strict";
+var MemoryStore = require('./store/memory'),
+ utils = require('./object-utils');
+
+/**
+ * a mechanism to merge multiple coverage objects into one. Handles the use case
+ * of overlapping coverage information for the same files in multiple coverage
+ * objects and does not double-count in this situation. For example, if
+ * you pass the same coverage object multiple times, the final merged object will be
+ * no different that any of the objects passed in (except for execution counts).
+ *
+ * The `Collector` is built for scale to handle thousands of coverage objects.
+ * By default, all processing is done in memory since the common use-case is of
+ * one or a few coverage objects. You can work around memory
+ * issues by passing in a `Store` implementation that stores temporary computations
+ * on disk (the `tmp` store, for example).
+ *
+ * The `getFinalCoverage` method returns an object with merged coverage information
+ * and is provided as a convenience for implementors working with coverage information
+ * that can fit into memory. Reporters, in the interest of generality, should *not* use this method for
+ * creating reports.
+ *
+ * Usage
+ * -----
+ *
+ * var collector = new require('istanbul').Collector();
+ *
+ * files.forEach(function (f) {
+ * //each coverage object can have overlapping information about multiple files
+ * collector.add(JSON.parse(fs.readFileSync(f, 'utf8')));
+ * });
+ *
+ * collector.files().forEach(function(file) {
+ * var fileCoverage = collector.fileCoverageFor(file);
+ * console.log('Coverage for ' + file + ' is:' + JSON.stringify(fileCoverage));
+ * });
+ *
+ * // convenience method: do not use this when dealing with a large number of files
+ * var finalCoverage = collector.getFinalCoverage();
+ *
+ * @class Collector
+ * @module main
+ * @constructor
+ * @param {Object} options Optional. Configuration options.
+ * @param {Store} options.store - an implementation of `Store` to use for temporary
+ * calculations.
+ */
+function Collector(options) {
+ options = options || {};
+ this.store = options.store || new MemoryStore();
+}
+
+Collector.prototype = {
+ /**
+ * adds a coverage object to the collector.
+ *
+ * @method add
+ * @param {Object} coverage the coverage object.
+ * @param {String} testName Optional. The name of the test used to produce the object.
+ * This is currently not used.
+ */
+ add: function (coverage /*, testName */) {
+ var store = this.store;
+ Object.keys(coverage).forEach(function (key) {
+ var fileCoverage = coverage[key];
+ if (store.hasKey(key)) {
+ store.setObject(key, utils.mergeFileCoverage(fileCoverage, store.getObject(key)));
+ } else {
+ store.setObject(key, fileCoverage);
+ }
+ });
+ },
+ /**
+ * returns a list of unique file paths for which coverage information has been added.
+ * @method files
+ * @return {Array} an array of file paths for which coverage information is present.
+ */
+ files: function () {
+ return this.store.keys();
+ },
+ /**
+ * return file coverage information for a single file
+ * @method fileCoverageFor
+ * @param {String} fileName the path for the file for which coverage information is
+ * required. Must be one of the values returned in the `files()` method.
+ * @return {Object} the coverage information for the specified file.
+ */
+ fileCoverageFor: function (fileName) {
+ var ret = this.store.getObject(fileName);
+ utils.addDerivedInfoForFile(ret);
+ return ret;
+ },
+ /**
+ * returns file coverage information for all files. This has the same format as
+ * any of the objects passed in to the `add` method. The number of keys in this
+ * object will be a superset of all keys found in the objects passed to `add()`
+ * @method getFinalCoverage
+ * @return {Object} the merged coverage information
+ */
+ getFinalCoverage: function () {
+ var ret = {},
+ that = this;
+ this.files().forEach(function (file) {
+ ret[file] = that.fileCoverageFor(file);
+ });
+ return ret;
+ },
+ /**
+ * disposes this collector and reclaims temporary resources used in the
+ * computation. Calls `dispose()` on the underlying store.
+ * @method dispose
+ */
+ dispose: function () {
+ this.store.dispose();
+ }
+};
+
+module.exports = Collector; \ No newline at end of file