aboutsummaryrefslogtreecommitdiffstats
path: root/vnfmarket/src/main/webapp/vnfmarket/node_modules/istanbul/lib/config.js
diff options
context:
space:
mode:
Diffstat (limited to 'vnfmarket/src/main/webapp/vnfmarket/node_modules/istanbul/lib/config.js')
-rw-r--r--vnfmarket/src/main/webapp/vnfmarket/node_modules/istanbul/lib/config.js483
1 files changed, 483 insertions, 0 deletions
diff --git a/vnfmarket/src/main/webapp/vnfmarket/node_modules/istanbul/lib/config.js b/vnfmarket/src/main/webapp/vnfmarket/node_modules/istanbul/lib/config.js
new file mode 100644
index 00000000..47670ce5
--- /dev/null
+++ b/vnfmarket/src/main/webapp/vnfmarket/node_modules/istanbul/lib/config.js
@@ -0,0 +1,483 @@
+/*
+ Copyright (c) 2013, Yahoo! Inc. All rights reserved.
+ Copyrights licensed under the New BSD License. See the accompanying LICENSE file for terms.
+ */
+var path = require('path'),
+ fs = require('fs'),
+ existsSync = fs.existsSync || path.existsSync,
+ CAMEL_PATTERN = /([a-z])([A-Z])/g,
+ YML_PATTERN = /\.ya?ml$/,
+ yaml = require('js-yaml'),
+ defaults = require('./report/common/defaults');
+
+function defaultConfig(includeBackCompatAttrs) {
+ var ret = {
+ verbose: false,
+ instrumentation: {
+ root: '.',
+ extensions: ['.js'],
+ 'default-excludes': true,
+ excludes: [],
+ 'embed-source': false,
+ variable: '__coverage__',
+ compact: true,
+ 'preserve-comments': false,
+ 'complete-copy': false,
+ 'save-baseline': false,
+ 'baseline-file': './coverage/coverage-baseline.json',
+ 'include-all-sources': false,
+ 'include-pid': false
+ },
+ reporting: {
+ print: 'summary',
+ reports: [ 'lcov' ],
+ dir: './coverage'
+ },
+ hooks: {
+ 'hook-run-in-context': false,
+ 'post-require-hook': null,
+ 'handle-sigint': false
+ },
+ check: {
+ global: {
+ statements: 0,
+ lines: 0,
+ branches: 0,
+ functions: 0,
+ excludes: [] // Currently list of files (root + path). For future, extend to patterns.
+ },
+ each: {
+ statements: 0,
+ lines: 0,
+ branches: 0,
+ functions: 0,
+ excludes: []
+ }
+ }
+ };
+ ret.reporting.watermarks = defaults.watermarks();
+ ret.reporting['report-config'] = defaults.defaultReportConfig();
+
+ if (includeBackCompatAttrs) {
+ ret.instrumentation['preload-sources'] = false;
+ }
+
+ return ret;
+}
+
+function dasherize(word) {
+ return word.replace(CAMEL_PATTERN, function (match, lch, uch) {
+ return lch + '-' + uch.toLowerCase();
+ });
+}
+function isScalar(v) {
+ if (v === null) { return true; }
+ return v !== undefined && !Array.isArray(v) && typeof v !== 'object';
+}
+
+function isObject(v) {
+ return typeof v === 'object' && v !== null && !Array.isArray(v);
+}
+
+function mergeObjects(explicit, template) {
+
+ var ret = {};
+
+ Object.keys(template).forEach(function (k) {
+ var v1 = template[k],
+ v2 = explicit[k];
+
+ if (Array.isArray(v1)) {
+ ret[k] = Array.isArray(v2) && v2.length > 0 ? v2 : v1;
+ } else if (isObject(v1)) {
+ v2 = isObject(v2) ? v2 : {};
+ ret[k] = mergeObjects(v2, v1);
+ } else {
+ ret[k] = isScalar(v2) ? v2 : v1;
+ }
+ });
+ return ret;
+}
+
+function mergeDefaults(explicit, implicit) {
+ return mergeObjects(explicit || {}, implicit);
+}
+
+function addMethods() {
+ var args = Array.prototype.slice.call(arguments),
+ cons = args.shift();
+
+ args.forEach(function (arg) {
+ var method = arg,
+ property = dasherize(arg);
+ cons.prototype[method] = function () {
+ return this.config[property];
+ };
+ });
+}
+
+/**
+ * Object that returns instrumentation options
+ * @class InstrumentOptions
+ * @module config
+ * @constructor
+ * @param config the instrumentation part of the config object
+ */
+function InstrumentOptions(config) {
+ if (config['preload-sources']) {
+ console.error('The preload-sources option is deprecated, please use include-all-sources instead.');
+ config['include-all-sources'] = config['preload-sources'];
+ }
+ this.config = config;
+}
+
+/**
+ * returns if default excludes should be turned on. Used by the `cover` command.
+ * @method defaultExcludes
+ * @return {Boolean} true if default excludes should be turned on
+ */
+/**
+ * returns if non-JS files should be copied during instrumentation. Used by the
+ * `instrument` command.
+ * @method completeCopy
+ * @return {Boolean} true if non-JS files should be copied
+ */
+/**
+ * returns if the source should be embedded in the instrumented code. Used by the
+ * `instrument` command.
+ * @method embedSource
+ * @return {Boolean} true if the source should be embedded in the instrumented code
+ */
+/**
+ * the coverage variable name to use. Used by the `instrument` command.
+ * @method variable
+ * @return {String} the coverage variable name to use
+ */
+/**
+ * returns if the output should be compact JS. Used by the `instrument` command.
+ * @method compact
+ * @return {Boolean} true if the output should be compact
+ */
+/**
+ * returns if comments should be preserved in the generated JS. Used by the
+ * `cover` and `instrument` commands.
+ * @method preserveComments
+ * @return {Boolean} true if comments should be preserved in the generated JS
+ */
+/**
+ * returns if a zero-coverage baseline file should be written as part of
+ * instrumentation. This allows reporting to display numbers for files that have
+ * no tests. Used by the `instrument` command.
+ * @method saveBaseline
+ * @return {Boolean} true if a baseline coverage file should be written.
+ */
+/**
+ * Sets the baseline coverage filename. Used by the `instrument` command.
+ * @method baselineFile
+ * @return {String} the name of the baseline coverage file.
+ */
+/**
+ * returns if the coverage filename should include the PID. Used by the `instrument` command.
+ * @method includePid
+ * @return {Boolean} true to include pid in coverage filename.
+ */
+
+
+addMethods(InstrumentOptions,
+ 'extensions', 'defaultExcludes', 'completeCopy',
+ 'embedSource', 'variable', 'compact', 'preserveComments',
+ 'saveBaseline', 'baselineFile',
+ 'includeAllSources', 'includePid');
+
+/**
+ * returns the root directory used by istanbul which is typically the root of the
+ * source tree. Used by the `cover` and `report` commands.
+ * @method root
+ * @return {String} the root directory used by istanbul.
+ */
+InstrumentOptions.prototype.root = function () { return path.resolve(this.config.root); };
+/**
+ * returns an array of fileset patterns that should be excluded for instrumentation.
+ * Used by the `instrument` and `cover` commands.
+ * @method excludes
+ * @return {Array} an array of fileset patterns that should be excluded for
+ * instrumentation.
+ */
+InstrumentOptions.prototype.excludes = function (excludeTests) {
+ var defs;
+ if (this.defaultExcludes()) {
+ defs = [ '**/node_modules/**' ];
+ if (excludeTests) {
+ defs = defs.concat(['**/test/**', '**/tests/**']);
+ }
+ return defs.concat(this.config.excludes);
+ }
+ return this.config.excludes;
+};
+
+/**
+ * Object that returns reporting options
+ * @class ReportingOptions
+ * @module config
+ * @constructor
+ * @param config the reporting part of the config object
+ */
+function ReportingOptions(config) {
+ this.config = config;
+}
+
+/**
+ * returns the kind of information to be printed on the console. May be one
+ * of `summary`, `detail`, `both` or `none`. Used by the
+ * `cover` command.
+ * @method print
+ * @return {String} the kind of information to print to the console at the end
+ * of the `cover` command execution.
+ */
+/**
+ * returns a list of reports that should be generated at the end of a run. Used
+ * by the `cover` and `report` commands.
+ * @method reports
+ * @return {Array} an array of reports that should be produced
+ */
+/**
+ * returns the directory under which reports should be generated. Used by the
+ * `cover` and `report` commands.
+ *
+ * @method dir
+ * @return {String} the directory under which reports should be generated.
+ */
+/**
+ * returns an object that has keys that are report format names and values that are objects
+ * containing detailed configuration for each format. Running `istanbul help config`
+ * will give you all the keys per report format that can be overridden.
+ * Used by the `cover` and `report` commands.
+ * @method reportConfig
+ * @return {Object} detailed report configuration per report format.
+ */
+addMethods(ReportingOptions, 'print', 'reports', 'dir', 'reportConfig');
+
+function isInvalidMark(v, key) {
+ var prefix = 'Watermark for [' + key + '] :';
+
+ if (v.length !== 2) {
+ return prefix + 'must be an array of length 2';
+ }
+ v[0] = Number(v[0]);
+ v[1] = Number(v[1]);
+
+ if (isNaN(v[0]) || isNaN(v[1])) {
+ return prefix + 'must have valid numbers';
+ }
+ if (v[0] < 0 || v[1] < 0) {
+ return prefix + 'must be positive numbers';
+ }
+ if (v[1] > 100) {
+ return prefix + 'cannot exceed 100';
+ }
+ if (v[1] <= v[0]) {
+ return prefix + 'low must be less than high';
+ }
+ return null;
+}
+
+/**
+ * returns the low and high watermarks to be used to designate whether coverage
+ * is `low`, `medium` or `high`. Statements, functions, branches and lines can
+ * have independent watermarks. These are respected by all reports
+ * that color for low, medium and high coverage. See the default configuration for exact syntax
+ * using `istanbul help config`. Used by the `cover` and `report` commands.
+ *
+ * @method watermarks
+ * @return {Object} an object containing low and high watermarks for statements,
+ * branches, functions and lines.
+ */
+ReportingOptions.prototype.watermarks = function () {
+ var v = this.config.watermarks,
+ defs = defaults.watermarks(),
+ ret = {};
+
+ Object.keys(defs).forEach(function (k) {
+ var mark = v[k], //it will already be a non-zero length array because of the way the merge works
+ message = isInvalidMark(mark, k);
+ if (message) {
+ console.error(message);
+ ret[k] = defs[k];
+ } else {
+ ret[k] = mark;
+ }
+ });
+ return ret;
+};
+
+/**
+ * Object that returns hook options. Note that istanbul does not provide an
+ * option to hook `require`. This is always done by the `cover` command.
+ * @class HookOptions
+ * @module config
+ * @constructor
+ * @param config the hooks part of the config object
+ */
+function HookOptions(config) {
+ this.config = config;
+}
+
+/**
+ * returns if `vm.runInThisContext` needs to be hooked, in addition to the standard
+ * `require` hooks added by istanbul. This should be true for code that uses
+ * RequireJS for example. Used by the `cover` command.
+ * @method hookRunInContext
+ * @return {Boolean} true if `vm.runInThisContext` needs to be hooked for coverage
+ */
+/**
+ * returns a path to JS file or a dependent module that should be used for
+ * post-processing files after they have been required. See the `yui-istanbul` module for
+ * an example of a post-require hook. This particular hook modifies the yui loader when
+ * that file is required to add istanbul interceptors. Use by the `cover` command
+ *
+ * @method postRequireHook
+ * @return {String} a path to a JS file or the name of a node module that needs
+ * to be used as a `require` post-processor
+ */
+/**
+ * returns if istanbul needs to add a SIGINT (control-c, usually) handler to
+ * save coverage information. Useful for getting code coverage out of processes
+ * that run forever and need a SIGINT to terminate.
+ * @method handleSigint
+ * @return {Boolean} true if SIGINT needs to be hooked to write coverage information
+ */
+
+addMethods(HookOptions, 'hookRunInContext', 'postRequireHook', 'handleSigint');
+
+/**
+ * represents the istanbul configuration and provides sub-objects that can
+ * return instrumentation, reporting and hook options respectively.
+ * Usage
+ * -----
+ *
+ * var configObj = require('istanbul').config.loadFile();
+ *
+ * console.log(configObj.reporting.reports());
+ *
+ * @class Configuration
+ * @module config
+ * @param {Object} obj the base object to use as the configuration
+ * @param {Object} overrides optional - override attributes that are merged into
+ * the base config
+ * @constructor
+ */
+function Configuration(obj, overrides) {
+
+ var config = mergeDefaults(obj, defaultConfig(true));
+ if (isObject(overrides)) {
+ config = mergeDefaults(overrides, config);
+ }
+ if (config.verbose) {
+ console.error('Using configuration');
+ console.error('-------------------');
+ console.error(yaml.safeDump(config, { indent: 4, flowLevel: 3 }));
+ console.error('-------------------\n');
+ }
+ this.verbose = config.verbose;
+ this.instrumentation = new InstrumentOptions(config.instrumentation);
+ this.reporting = new ReportingOptions(config.reporting);
+ this.hooks = new HookOptions(config.hooks);
+ this.check = config.check; // Pass raw config sub-object.
+}
+
+/**
+ * true if verbose logging is required
+ * @property verbose
+ * @type Boolean
+ */
+/**
+ * instrumentation options
+ * @property instrumentation
+ * @type InstrumentOptions
+ */
+/**
+ * reporting options
+ * @property reporting
+ * @type ReportingOptions
+ */
+/**
+ * hook options
+ * @property hooks
+ * @type HookOptions
+ */
+
+
+function loadFile(file, overrides) {
+ var defaultConfigFile = path.resolve('.istanbul.yml'),
+ configObject;
+
+ if (file) {
+ if (!existsSync(file)) {
+ throw new Error('Invalid configuration file specified:' + file);
+ }
+ } else {
+ if (existsSync(defaultConfigFile)) {
+ file = defaultConfigFile;
+ }
+ }
+
+ if (file) {
+ console.error('Loading config: ' + file);
+ configObject = file.match(YML_PATTERN) ?
+ yaml.safeLoad(fs.readFileSync(file, 'utf8'), { filename: file }) :
+ require(path.resolve(file));
+ }
+
+ return new Configuration(configObject, overrides);
+}
+
+function loadObject(obj, overrides) {
+ return new Configuration(obj, overrides);
+}
+
+/**
+ * methods to load the configuration object.
+ * Usage
+ * -----
+ *
+ * var config = require('istanbul').config,
+ * configObj = config.loadFile();
+ *
+ * console.log(configObj.reporting.reports());
+ *
+ * @class Config
+ * @module main
+ * @static
+ */
+module.exports = {
+ /**
+ * loads the specified configuration file with optional overrides. Throws
+ * when a file is specified and it is not found.
+ * @method loadFile
+ * @static
+ * @param {String} file the file to load. If falsy, the default config file, if present, is loaded.
+ * If not a default config is used.
+ * @param {Object} overrides - an object with override keys that are merged into the
+ * config object loaded
+ * @return {Configuration} the config object with overrides applied
+ */
+ loadFile: loadFile,
+ /**
+ * loads the specified configuration object with optional overrides.
+ * @method loadObject
+ * @static
+ * @param {Object} obj the object to use as the base configuration.
+ * @param {Object} overrides - an object with override keys that are merged into the
+ * config object
+ * @return {Configuration} the config object with overrides applied
+ */
+ loadObject: loadObject,
+ /**
+ * returns the default configuration object. Note that this is a plain object
+ * and not a `Configuration` instance.
+ * @method defaultConfig
+ * @static
+ * @return {Object} an object that represents the default config
+ */
+ defaultConfig: defaultConfig
+};