From a22c4e0ecbc61423965424dbc405024067a754d6 Mon Sep 17 00:00:00 2001 From: "Benjamin E. Coe" Date: Sun, 23 Dec 2018 00:02:01 -0500 Subject: [PATCH] feat: allow script wrapper length to be specified (#51) --- bin/c8.js | 3 ++- lib/parse-args.js | 4 ++++ lib/report.js | 6 ++++-- package-lock.json | 6 +++--- package.json | 2 +- test/integration.js.snap | 12 ++++++------ 6 files changed, 20 insertions(+), 13 deletions(-) diff --git a/bin/c8.js b/bin/c8.js index 97d68494..6498be03 100755 --- a/bin/c8.js +++ b/bin/c8.js @@ -26,7 +26,8 @@ function outputReport () { tempDirectory: argv.tempDirectory, watermarks: argv.watermarks, resolve: argv.resolve, - omitRelative: argv.omitRelative + omitRelative: argv.omitRelative, + wrapperLength: argv.wrapperLength }) } diff --git a/lib/parse-args.js b/lib/parse-args.js index 6d43a2fb..d2bd84c1 100644 --- a/lib/parse-args.js +++ b/lib/parse-args.js @@ -32,6 +32,10 @@ yargs() default: '', describe: 'resolve paths to alternate base directory' }) + .option('wrapper-length', { + describe: 'how many bytes is the wrapper prefix on executed JavaScript', + type: 'number' + }) .option('omit-relative', { default: true, type: 'boolean', diff --git a/lib/report.js b/lib/report.js index eff01778..3cb2d119 100644 --- a/lib/report.js +++ b/lib/report.js @@ -15,7 +15,8 @@ class Report { tempDirectory, watermarks, resolve, - omitRelative + omitRelative, + wrapperLength }) { this.reporter = reporter this.tempDirectory = tempDirectory @@ -26,6 +27,7 @@ class Report { include: include }) this.omitRelative = omitRelative + this.wrapperLength = wrapperLength } run () { const map = this._getCoverageMapFromAllCoverageFiles() @@ -49,7 +51,7 @@ class Report { for (const v8ScriptCov of v8ProcessCov.result) { try { const path = resolve(this.resolve, v8ScriptCov.url) - const script = v8toIstanbul(path) + const script = v8toIstanbul(path, this.wrapperLength) script.applyCoverage(v8ScriptCov.functions) map.merge(script.toIstanbul()) } catch (err) { diff --git a/package-lock.json b/package-lock.json index 76c18b51..01223b1f 100644 --- a/package-lock.json +++ b/package-lock.json @@ -4164,9 +4164,9 @@ "integrity": "sha512-yXJmeNaw3DnnKAOKJE51sL/ZaYfWJRl1pK9dr19YFCu0ObS231AB1/LbqTKRAQ5kw8A90rA6fr4riOUpTZvQZA==" }, "v8-to-istanbul": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/v8-to-istanbul/-/v8-to-istanbul-1.2.0.tgz", - "integrity": "sha512-rVSmjdEfJmOHN8GYCbg+XUhbzXZr7DzdaXIslB9DdcopGZEMsW5x5qIdxr/8DcW7msULHNnvs/xUY1TszvhKRw==" + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/v8-to-istanbul/-/v8-to-istanbul-2.0.0.tgz", + "integrity": "sha512-2swGput8KMKy61XglKvdf1+cwcJeQin00Ep+emQ3maiGEksNqtp3UlVII84+5mhinumPDaa0O5Y9JLTNA2ShGA==" }, "validate-npm-package-license": { "version": "3.0.1", diff --git a/package.json b/package.json index 3708d329..259ae8f0 100644 --- a/package.json +++ b/package.json @@ -41,7 +41,7 @@ "rimraf": "^2.6.2", "test-exclude": "^5.0.0", "uuid": "^3.3.2", - "v8-to-istanbul": "^1.2.0", + "v8-to-istanbul": "^2.0.0", "yargs": "^12.0.2", "yargs-parser": "^10.1.0" }, diff --git a/test/integration.js.snap b/test/integration.js.snap index ebf19de2..07790706 100644 --- a/test/integration.js.snap +++ b/test/integration.js.snap @@ -8,12 +8,12 @@ second --------------------|----------|----------|----------|----------|-------------------| File | % Stmts | % Branch | % Funcs | % Lines | Uncovered Line #s | --------------------|----------|----------|----------|----------|-------------------| -All files | 95 | 72.22 | 0 | 95 | | - bin | 87.76 | 62.5 | 100 | 87.76 | | - c8.js | 87.76 | 62.5 | 100 | 87.76 | 35,39,46,47,48,49 | - lib | 96.65 | 62.07 | 100 | 96.65 | | - parse-args.js | 97.47 | 44.44 | 100 | 97.47 | 55,56 | - report.js | 96.15 | 70 | 100 | 96.15 | 56,57,95,96,97 | +All files | 95.11 | 72.22 | 0 | 95.11 | | + bin | 88 | 62.5 | 100 | 88 | | + c8.js | 88 | 62.5 | 100 | 88 | 36,40,47,48,49,50 | + lib | 96.74 | 62.07 | 100 | 96.74 | | + parse-args.js | 97.59 | 44.44 | 100 | 97.59 | 59,60 | + report.js | 96.21 | 70 | 100 | 96.21 | 58,59,97,98,99 | test/fixtures | 95.16 | 94.12 | 0 | 95.16 | | async.js | 100 | 100 | 100 | 100 | | multiple-spawn.js | 100 | 100 | 100 | 100 | |