From 0d3b57f245003d934c0a824f1b6fe54dcebacdb7 Mon Sep 17 00:00:00 2001 From: "Benjamin E. Coe" Date: Sat, 24 Oct 2020 12:38:36 -0400 Subject: [PATCH] fix: drop special shebang handling (#125) As of Node 13, the shebang is parsed by v8. --- .nycrc | 4 +-- lib/source.js | 4 ++- package-lock.json | 62 +++++++++++++++++++++++++++++++++++++-- package.json | 1 + test/fixtures/shebang.js | 1 + test/utils/run-fixture.js | 6 ++++ 6 files changed, 72 insertions(+), 6 deletions(-) diff --git a/.nycrc b/.nycrc index 9912f091..8cea0f06 100644 --- a/.nycrc +++ b/.nycrc @@ -7,6 +7,6 @@ "text" ], "lines": 99.5, - "branches": "94", + "branches": "92", "statements": "99.5" -} \ No newline at end of file +} diff --git a/lib/source.js b/lib/source.js index 58902287..c4233e63 100644 --- a/lib/source.js +++ b/lib/source.js @@ -206,8 +206,10 @@ function originalPositionTryBoth (sourceMap, line, column) { return original } +// Not required since Node 13, see: https://github.com/nodejs/node/pull/27375 +const isPrerNode13 = /^v1[0-2]\./u.test(process.version) function getShebangLength (source) { - if (source.indexOf('#!') === 0) { + if (isPrerNode13 && source.indexOf('#!') === 0) { const match = source.match(/(?#!.*)/) if (match) { return match.groups.shebang.length diff --git a/package-lock.json b/package-lock.json index 272b3229..5771795e 100644 --- a/package-lock.json +++ b/package-lock.json @@ -444,6 +444,14 @@ "requires": { "pify": "^4.0.1", "semver": "^5.6.0" + }, + "dependencies": { + "semver": { + "version": "5.7.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz", + "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==", + "dev": true + } } }, "write-file-atomic": { @@ -689,6 +697,14 @@ "requires": { "pify": "^4.0.1", "semver": "^5.6.0" + }, + "dependencies": { + "semver": { + "version": "5.7.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz", + "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==", + "dev": true + } } } } @@ -1473,6 +1489,14 @@ "requires": { "pify": "^4.0.1", "semver": "^5.6.0" + }, + "dependencies": { + "semver": { + "version": "5.7.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz", + "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==", + "dev": true + } } }, "p-locate": { @@ -2066,6 +2090,14 @@ "semver": "^5.5.0", "shebang-command": "^1.2.0", "which": "^1.2.9" + }, + "dependencies": { + "semver": { + "version": "5.7.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz", + "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==", + "dev": true + } } }, "istanbul-lib-coverage": { @@ -2129,6 +2161,14 @@ "requires": { "pify": "^4.0.1", "semver": "^5.6.0" + }, + "dependencies": { + "semver": { + "version": "5.7.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz", + "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==", + "dev": true + } } }, "rimraf": { @@ -2562,6 +2602,14 @@ "resolve": "^1.10.0", "semver": "2 || 3 || 4 || 5", "validate-npm-package-license": "^3.0.1" + }, + "dependencies": { + "semver": { + "version": "5.7.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz", + "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==", + "dev": true + } } }, "normalize-path": { @@ -2693,6 +2741,14 @@ "requires": { "pify": "^4.0.1", "semver": "^5.6.0" + }, + "dependencies": { + "semver": { + "version": "5.7.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz", + "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==", + "dev": true + } } }, "p-locate": { @@ -3434,9 +3490,9 @@ "dev": true }, "semver": { - "version": "5.7.1", - "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz", - "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==", + "version": "7.3.2", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.2.tgz", + "integrity": "sha512-OrOb32TeeambH6UrhtShmF7CRDqhL6/5XpPNp2DuRH6+9QLw/orhp72j87v8Qa1ScDkvrrBNpZcDejAirJmfXQ==", "dev": true }, "set-blocking": { diff --git a/package.json b/package.json index b8a6d568..57067bea 100644 --- a/package.json +++ b/package.json @@ -32,6 +32,7 @@ "devDependencies": { "@types/node": "^12.7.11", "c8": "^7.2.1", + "semver": "^7.3.2", "should": "13.2.3", "standard": "^14.3.1", "tap": "^14.10.8" diff --git a/test/fixtures/shebang.js b/test/fixtures/shebang.js index b219a3ea..124f2e57 100644 --- a/test/fixtures/shebang.js +++ b/test/fixtures/shebang.js @@ -1,5 +1,6 @@ module.exports = { describe: 'shebang', + maxNodeVersion: 'v13.0.0', coverageV8: { "scriptId": "56", "url": "./test/fixtures/scripts/shebang.js", diff --git a/test/utils/run-fixture.js b/test/utils/run-fixture.js index 019a6c4b..9485eec0 100644 --- a/test/utils/run-fixture.js +++ b/test/utils/run-fixture.js @@ -2,6 +2,7 @@ const toIstanbul = require('../../') const t = require('tap') +const semver = require('semver') t.mochaGlobals() require('should') @@ -9,6 +10,11 @@ require('should') module.exports = async (fixture) => { const script = toIstanbul(fixture.coverageV8.url) await script.load() + if (fixture.maxNodeVersion && !semver.lt(process.version, fixture.maxNodeVersion)) { + console.info(`skipping "${fixture.describe}" fixture maxNodeVersion = ${fixture.maxNodeVersion}`) + return + } + script.applyCoverage(fixture.coverageV8.functions) let coverageIstanbul = script.toIstanbul()