From e95c77be988d2b0e1cf71c5bd527c1a9e55ae8ea Mon Sep 17 00:00:00 2001 From: "Benjamin E. Coe" Date: Sun, 16 Sep 2018 10:26:25 -0700 Subject: [PATCH] feat: warn instead of throw on exception (#29) --- lib/report.js | 26 +++++++----- package-lock.json | 86 ++++++++++++++++++++++++++++++++++++++++ test/integration.js.snap | 6 +-- 3 files changed, 106 insertions(+), 12 deletions(-) diff --git a/lib/report.js b/lib/report.js index 6623d713..9fb53294 100644 --- a/lib/report.js +++ b/lib/report.js @@ -60,11 +60,15 @@ class Report { }) Object.keys(mergedResults).forEach((url) => { - const result = mergedResults[url] - const path = resolve(this.resolve, result.url) - const script = v8toIstanbul(path) - script.applyCoverage(result.functions) - map.merge(script.toIstanbul()) + try { + const result = mergedResults[url] + const path = resolve(this.resolve, result.url) + const script = v8toIstanbul(path) + script.applyCoverage(result.functions) + map.merge(script.toIstanbul()) + } catch (err) { + console.warn(`file: ${url} error: ${err.stack}`) + } }) return map @@ -73,10 +77,14 @@ class Report { const files = readdirSync(this.tempDirectory) return files.map((f) => { - return JSON.parse(readFileSync( - resolve(this.tempDirectory, f), - 'utf8' - )) + try { + return JSON.parse(readFileSync( + resolve(this.tempDirectory, f), + 'utf8' + )) + } catch (err) { + console.warn(`${err.stack}`) + } }) } } diff --git a/package-lock.json b/package-lock.json index ed8b28c3..12aa9986 100644 --- a/package-lock.json +++ b/package-lock.json @@ -317,6 +317,16 @@ "type-detect": "^4.0.0" } }, + "chai-jest-snapshot": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/chai-jest-snapshot/-/chai-jest-snapshot-2.0.0.tgz", + "integrity": "sha512-u8jZZjw/0G1t5A8wDfH6K7DAVfMg3g0dsw9wKQURNUyrZX96VojHNrFMmLirq1m0kOvC5icgL/Qh/fu1MZyvUw==", + "dev": true, + "requires": { + "jest-snapshot": "21.2.1", + "lodash.values": "^4.3.0" + } + }, "chalk": { "version": "2.4.1", "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.1.tgz", @@ -2335,6 +2345,49 @@ "handlebars": "^4.0.11" } }, + "jest-diff": { + "version": "21.2.1", + "resolved": "https://registry.npmjs.org/jest-diff/-/jest-diff-21.2.1.tgz", + "integrity": "sha512-E5fu6r7PvvPr5qAWE1RaUwIh/k6Zx/3OOkZ4rk5dBJkEWRrUuSgbMt2EO8IUTPTd6DOqU3LW6uTIwX5FRvXoFA==", + "dev": true, + "requires": { + "chalk": "^2.0.1", + "diff": "^3.2.0", + "jest-get-type": "^21.2.0", + "pretty-format": "^21.2.1" + } + }, + "jest-get-type": { + "version": "21.2.0", + "resolved": "https://registry.npmjs.org/jest-get-type/-/jest-get-type-21.2.0.tgz", + "integrity": "sha512-y2fFw3C+D0yjNSDp7ab1kcd6NUYfy3waPTlD8yWkAtiocJdBRQqNoRqVfMNxgj+IjT0V5cBIHJO0z9vuSSZ43Q==", + "dev": true + }, + "jest-matcher-utils": { + "version": "21.2.1", + "resolved": "https://registry.npmjs.org/jest-matcher-utils/-/jest-matcher-utils-21.2.1.tgz", + "integrity": "sha512-kn56My+sekD43dwQPrXBl9Zn9tAqwoy25xxe7/iY4u+mG8P3ALj5IK7MLHZ4Mi3xW7uWVCjGY8cm4PqgbsqMCg==", + "dev": true, + "requires": { + "chalk": "^2.0.1", + "jest-get-type": "^21.2.0", + "pretty-format": "^21.2.1" + } + }, + "jest-snapshot": { + "version": "21.2.1", + "resolved": "https://registry.npmjs.org/jest-snapshot/-/jest-snapshot-21.2.1.tgz", + "integrity": "sha512-bpaeBnDpdqaRTzN8tWg0DqOTo2DvD3StOemxn67CUd1p1Po+BUpvePAp44jdJ7Pxcjfg+42o4NHw1SxdCA2rvg==", + "dev": true, + "requires": { + "chalk": "^2.0.1", + "jest-diff": "^21.2.1", + "jest-matcher-utils": "^21.2.1", + "mkdirp": "^0.5.1", + "natural-compare": "^1.4.0", + "pretty-format": "^21.2.1" + } + }, "js-tokens": { "version": "3.0.2", "resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-3.0.2.tgz", @@ -2505,6 +2558,12 @@ "lodash._reinterpolate": "~3.0.0" } }, + "lodash.values": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/lodash.values/-/lodash.values-4.3.0.tgz", + "integrity": "sha1-o6bCsOvsxcLLocF+bmIP6BtT00c=", + "dev": true + }, "log-driver": { "version": "1.2.7", "resolved": "https://registry.npmjs.org/log-driver/-/log-driver-1.2.7.tgz", @@ -3187,6 +3246,33 @@ "integrity": "sha1-IZMqVJ9eUv/ZqCf1cOBL5iqX2lQ=", "dev": true }, + "pretty-format": { + "version": "21.2.1", + "resolved": "https://registry.npmjs.org/pretty-format/-/pretty-format-21.2.1.tgz", + "integrity": "sha512-ZdWPGYAnYfcVP8yKA3zFjCn8s4/17TeYH28MXuC8vTp0o21eXjbFGcOAXZEaDaOFJjc3h2qa7HQNHNshhvoh2A==", + "dev": true, + "requires": { + "ansi-regex": "^3.0.0", + "ansi-styles": "^3.2.0" + }, + "dependencies": { + "ansi-regex": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-3.0.0.tgz", + "integrity": "sha1-7QMXwyIGT3lGbAKWa922Bas32Zg=", + "dev": true + }, + "ansi-styles": { + "version": "3.2.1", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz", + "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==", + "dev": true, + "requires": { + "color-convert": "^1.9.0" + } + } + } + }, "process-nextick-args": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/process-nextick-args/-/process-nextick-args-2.0.0.tgz", diff --git a/test/integration.js.snap b/test/integration.js.snap index 788499ec..92ca6c63 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 | 94.12 | 70.59 | 0 | 94.12 | | +All files | 92.5 | 69.23 | 0 | 92.5 | | bin | 83.72 | 57.14 | 100 | 83.72 | | c8.js | 83.72 | 57.14 | 100 | 83.72 |... 22,40,41,42,43 | - lib | 96.41 | 65.38 | 100 | 96.41 | | + lib | 93.71 | 62.96 | 100 | 93.71 | | parse-args.js | 97.47 | 44.44 | 100 | 97.47 | 55,56 | - report.js | 95.45 | 76.47 | 100 | 95.45 | 51,52,53,54 | + report.js | 90.63 | 72.22 | 100 | 90.63 |... 70,71,85,86,87 | test/fixtures | 95.16 | 83.33 | 0 | 95.16 | | async.js | 100 | 100 | 100 | 100 | | multiple-spawn.js | 100 | 100 | 100 | 100 | |