diff options
Diffstat (limited to 'node_modules/nyc/lib/instrumenters')
-rw-r--r-- | node_modules/nyc/lib/instrumenters/istanbul.js | 49 | ||||
-rw-r--r-- | node_modules/nyc/lib/instrumenters/noop.js | 21 |
2 files changed, 70 insertions, 0 deletions
diff --git a/node_modules/nyc/lib/instrumenters/istanbul.js b/node_modules/nyc/lib/instrumenters/istanbul.js new file mode 100644 index 000000000..c1d4b1338 --- /dev/null +++ b/node_modules/nyc/lib/instrumenters/istanbul.js @@ -0,0 +1,49 @@ +'use strict' + +var convertSourceMap = require('convert-source-map') +var mergeSourceMap = require('merge-source-map') + +function InstrumenterIstanbul (cwd, options) { + var istanbul = InstrumenterIstanbul.istanbul() + var instrumenter = istanbul.createInstrumenter({ + autoWrap: true, + coverageVariable: '__coverage__', + embedSource: true, + noCompact: false, + preserveComments: true, + produceSourceMap: options.produceSourceMap + }) + + return { + instrumentSync: function (code, filename, sourceMap) { + var instrumented = instrumenter.instrumentSync(code, filename) + // the instrumenter can optionally produce source maps, + // this is useful for features like remapping stack-traces. + // TODO: test source-map merging logic. + if (options.produceSourceMap) { + var lastSourceMap = instrumenter.lastSourceMap() + if (lastSourceMap) { + if (sourceMap) { + lastSourceMap = mergeSourceMap( + sourceMap.toObject(), + lastSourceMap + ) + } + instrumented += '\n' + convertSourceMap.fromObject(lastSourceMap).toComment() + } + } + return instrumented + }, + lastFileCoverage: function () { + return instrumenter.lastFileCoverage() + } + } +} + +InstrumenterIstanbul.istanbul = function () { + InstrumenterIstanbul._istanbul || (InstrumenterIstanbul._istanbul = require('istanbul-lib-instrument')) + + return InstrumenterIstanbul._istanbul || (InstrumenterIstanbul._istanbul = require('istanbul')) +} + +module.exports = InstrumenterIstanbul diff --git a/node_modules/nyc/lib/instrumenters/noop.js b/node_modules/nyc/lib/instrumenters/noop.js new file mode 100644 index 000000000..935b587c0 --- /dev/null +++ b/node_modules/nyc/lib/instrumenters/noop.js @@ -0,0 +1,21 @@ +var FileCoverage = require('istanbul-lib-coverage').classes.FileCoverage +var readInitialCoverage = require('istanbul-lib-instrument').readInitialCoverage + +function NOOP () { + return { + instrumentSync: function (code, filename) { + var extracted = readInitialCoverage(code) + if (extracted) { + this.fileCoverage = new FileCoverage(extracted.coverageData) + } else { + this.fileCoverage = null + } + return code + }, + lastFileCoverage: function () { + return this.fileCoverage + } + } +} + +module.exports = NOOP |