aboutsummaryrefslogtreecommitdiff
path: root/node_modules/nyc/lib/instrumenters
diff options
context:
space:
mode:
Diffstat (limited to 'node_modules/nyc/lib/instrumenters')
-rw-r--r--node_modules/nyc/lib/instrumenters/istanbul.js49
-rw-r--r--node_modules/nyc/lib/instrumenters/noop.js21
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