aboutsummaryrefslogtreecommitdiffstats
path: root/vnfmarket/src/main/webapp/vnfmarket/node_modules/karma/lib/reporter.js
diff options
context:
space:
mode:
Diffstat (limited to 'vnfmarket/src/main/webapp/vnfmarket/node_modules/karma/lib/reporter.js')
-rw-r--r--vnfmarket/src/main/webapp/vnfmarket/node_modules/karma/lib/reporter.js110
1 files changed, 110 insertions, 0 deletions
diff --git a/vnfmarket/src/main/webapp/vnfmarket/node_modules/karma/lib/reporter.js b/vnfmarket/src/main/webapp/vnfmarket/node_modules/karma/lib/reporter.js
new file mode 100644
index 00000000..f2e80a5a
--- /dev/null
+++ b/vnfmarket/src/main/webapp/vnfmarket/node_modules/karma/lib/reporter.js
@@ -0,0 +1,110 @@
+var util = require('util')
+var log = require('./logger').create('reporter')
+var MultiReporter = require('./reporters/multi')
+var baseReporterDecoratorFactory = require('./reporters/base').decoratorFactory
+var SourceMapConsumer = require('source-map').SourceMapConsumer
+
+var createErrorFormatter = function (basePath, emitter, SourceMapConsumer) {
+ var lastServedFiles = []
+
+ emitter.on('file_list_modified', function (filesPromise) {
+ filesPromise.then(function (files) {
+ lastServedFiles = files.served
+ })
+ })
+
+ var findFile = function (path) {
+ for (var i = 0; i < lastServedFiles.length; i++) {
+ if (lastServedFiles[i].path === path) {
+ return lastServedFiles[i]
+ }
+ }
+ return null
+ }
+
+ var URL_REGEXP = new RegExp('http:\\/\\/[^\\/]*\\/' +
+ '(base|absolute)' + // prefix
+ '((?:[A-z]\\:)?[^\\?\\s\\:]*)' + // path
+ '(\\?\\w*)?' + // sha
+ '(\\:(\\d+))?' + // line
+ '(\\:(\\d+))?' + // column
+ '', 'g')
+
+ return function (msg, indentation) {
+ // remove domain and timestamp from source files
+ // and resolve base path / absolute path urls into absolute path
+ msg = (msg || '').replace(URL_REGEXP, function (_, prefix, path, __, ___, line, ____, column) {
+ if (prefix === 'base') {
+ path = basePath + path
+ }
+
+ var file = findFile(path)
+
+ if (file && file.sourceMap) {
+ line = parseInt(line || '0', 10)
+ column = parseInt(column || '0', 10)
+
+ var smc = new SourceMapConsumer(file.sourceMap)
+ try {
+ var original = smc.originalPositionFor({line: line, column: column})
+
+ return util.format('%s:%d:%d <- %s:%d:%d', path, line, column, original.source,
+ original.line, original.column)
+ } catch (e) {
+ log.warn('SourceMap position not found for trace: %s', msg)
+ // Fall back to non-source-mapped formatting.
+ }
+ }
+
+ return path + (line ? ':' + line : '') + (column ? ':' + column : '')
+ })
+
+ // indent every line
+ if (indentation) {
+ msg = indentation + msg.replace(/\n/g, '\n' + indentation)
+ }
+
+ return msg + '\n'
+ }
+}
+
+var createReporters = function (names, config, emitter, injector) {
+ var errorFormatter = createErrorFormatter(config.basePath, emitter, SourceMapConsumer)
+ var reporters = []
+
+ // TODO(vojta): instantiate all reporters through DI
+ names.forEach(function (name) {
+ if (['dots', 'progress'].indexOf(name) !== -1) {
+ var Cls = require('./reporters/' + name + (config.colors ? '_color' : ''))
+ return reporters.push(new Cls(errorFormatter, config.reportSlowerThan))
+ }
+
+ var locals = {
+ baseReporterDecorator: ['factory', baseReporterDecoratorFactory],
+ formatError: ['value', errorFormatter]
+ }
+
+ try {
+ reporters.push(injector.createChild([locals], ['reporter:' + name]).get('reporter:' + name))
+ } catch (e) {
+ if (e.message.indexOf('No provider for "reporter:' + name + '"') !== -1) {
+ log.warn('Can not load "%s", it is not registered!\n ' +
+ 'Perhaps you are missing some plugin?', name)
+ } else {
+ log.warn('Can not load "%s"!\n ' + e.stack, name)
+ }
+ }
+ })
+
+ // bind all reporters
+ reporters.forEach(function (reporter) {
+ emitter.bind(reporter)
+ })
+
+ return new MultiReporter(reporters)
+}
+
+createReporters.$inject = ['config.reporters', 'config', 'emitter', 'injector']
+
+// PUBLISH
+exports.createReporters = createReporters