diff --git a/package-lock.json b/package-lock.json index f9573a2b..e7ae2466 100644 --- a/package-lock.json +++ b/package-lock.json @@ -2951,9 +2951,9 @@ "dev": true }, "v8-to-istanbul": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/v8-to-istanbul/-/v8-to-istanbul-5.0.0.tgz", - "integrity": "sha512-x4Kbx2kGS+N+095L7Wgim6BECRTQUPtrbDhRFcfL1KLnzvhViKiJOy8Pl9FCRelja9ss4VsIzEHTT3cbc+fNFw==", + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/v8-to-istanbul/-/v8-to-istanbul-6.0.0.tgz", + "integrity": "sha512-o01hYXgLQVFfF1QOo7LeSqxC6J2BdnVS+dT6YGrKFMouLtLS7UTrjWVqYgkeef/iTpovP1WHyeDq0lRuLCEyIg==", "requires": { "@types/istanbul-lib-coverage": "^2.0.1", "convert-source-map": "^1.6.0", diff --git a/package.json b/package.json index ccb52c65..06909c93 100644 --- a/package.json +++ b/package.json @@ -43,7 +43,7 @@ "istanbul-reports": "^3.0.2", "rimraf": "^3.0.0", "test-exclude": "^6.0.0", - "v8-to-istanbul": "^5.0.0", + "v8-to-istanbul": "^6.0.0", "yargs": "^16.0.0", "yargs-parser": "^20.0.0" }, diff --git a/test/fixtures/issue-254.js b/test/fixtures/issue-254.js new file mode 100644 index 00000000..899b5249 --- /dev/null +++ b/test/fixtures/issue-254.js @@ -0,0 +1,7 @@ +function fn() { + return true; + /* c8 ignore next */ + console.log('never runs'); +} + +fn(); \ No newline at end of file diff --git a/test/integration.js b/test/integration.js index e98292b2..835bb69b 100644 --- a/test/integration.js +++ b/test/integration.js @@ -278,6 +278,20 @@ describe('c8', () => { ]) output.toString('utf8').should.matchSnapshot() }) + + // see: https://github.com/bcoe/c8/issues/254 + it('does not incorrectly mark previous branch as uncovered (see #254)', () => { + const { output } = spawnSync(nodePath, [ + c8Path, + '--exclude="test/*.js"', + '--temp-directory=tmp/issue-254', + '--clean=true', + '--reporter=text', + nodePath, + require.resolve('./fixtures/issue-254') + ]) + output.toString('utf8').should.matchSnapshot() + }) }) describe('source-maps', () => { @@ -344,9 +358,6 @@ describe('c8', () => { }) describe('nyc', () => { - // Bugs: - // first 'if' statement indicates two odd missing branches. - // line 4 should be covered. it('remaps branches', () => { const { output } = spawnSync(nodePath, [ c8Path, @@ -359,9 +370,6 @@ describe('c8', () => { output.toString('utf8').should.matchSnapshot() }) - // Bugs: - // the portion `class F` of `class Foo` indicates missing branch. - // line 6 should be covered. it('remaps classes', () => { const { output } = spawnSync(nodePath, [ c8Path, diff --git a/test/integration.js.snap b/test/integration.js.snap index 4e67eba9..65021e7e 100644 --- a/test/integration.js.snap +++ b/test/integration.js.snap @@ -1,5 +1,15 @@ // Jest Snapshot v1, https://goo.gl/fbAQLP +exports[`c8 /* c8 ignore next */ does not incorrectly mark previous branch as uncovered (see #254) 1`] = ` +",--------------|---------|----------|---------|---------|------------------- +File | % Stmts | % Branch | % Funcs | % Lines | Uncovered Line #s +--------------|---------|----------|---------|---------|------------------- +All files | 100 | 100 | 100 | 100 | + issue-254.js | 100 | 100 | 100 | 100 | +--------------|---------|----------|---------|---------|------------------- +," +`; + exports[`c8 /* c8 ignore next */ ignores lines with special comment 1`] = ` ",covered covered @@ -38,9 +48,9 @@ negative -----------------|---------|----------|---------|---------|------------------- File | % Stmts | % Branch | % Funcs | % Lines | Uncovered Line #s -----------------|---------|----------|---------|---------|------------------- -All files | 64.29 | 66.67 | 50 | 64.29 | - ts-compiled | 78.26 | 75 | 100 | 78.26 | - loaded.ts | 73.68 | 71.43 | 100 | 73.68 | 4-5,16-18 +All files | 64.29 | 57.14 | 50 | 64.29 | + ts-compiled | 78.26 | 66.67 | 100 | 78.26 | + loaded.ts | 73.68 | 66.67 | 100 | 73.68 | 4-5,16-18 main.ts | 100 | 100 | 100 | 100 | ts-compiled/dir | 0 | 0 | 0 | 0 | unloaded.ts | 0 | 0 | 0 | 0 | 1-5 @@ -55,9 +65,9 @@ negative --------------|---------|----------|---------|---------|------------------- File | % Stmts | % Branch | % Funcs | % Lines | Uncovered Line #s --------------|---------|----------|---------|---------|------------------- -All files | 64.29 | 66.67 | 50 | 64.29 | - ts-only | 78.26 | 75 | 100 | 78.26 | - loaded.ts | 73.68 | 71.43 | 100 | 73.68 | 4-5,16-18 +All files | 64.29 | 57.14 | 50 | 64.29 | + ts-only | 78.26 | 66.67 | 100 | 78.26 | + loaded.ts | 73.68 | 66.67 | 100 | 73.68 | 4-5,16-18 main.ts | 100 | 100 | 100 | 100 | ts-only/dir | 0 | 0 | 0 | 0 | unloaded.ts | 0 | 0 | 0 | 0 | 1-5 @@ -326,8 +336,8 @@ a = false ------------------------|---------|----------|---------|---------|------------------- File | % Stmts | % Branch | % Funcs | % Lines | Uncovered Line #s ------------------------|---------|----------|---------|---------|------------------- -All files | 84 | 57.14 | 100 | 84 | - branches.typescript.ts | 84 | 57.14 | 100 | 84 | 7,11-12,18 +All files | 84 | 50 | 100 | 84 | + branches.typescript.ts | 84 | 50 | 100 | 84 | 7,11-12,18 ------------------------|---------|----------|---------|---------|------------------- ," `; @@ -341,8 +351,8 @@ covered -----------------------|---------|----------|---------|---------|------------------- File | % Stmts | % Branch | % Funcs | % Lines | Uncovered Line #s -----------------------|---------|----------|---------|---------|------------------- -All files | 81.82 | 87.5 | 60 | 81.82 | - classes.typescript.ts | 81.82 | 87.5 | 60 | 81.82 | 12-13,21-22,27-28 +All files | 81.82 | 85.71 | 60 | 81.82 | + classes.typescript.ts | 81.82 | 85.71 | 60 | 81.82 | 12-13,21-22,27-28 -----------------------|---------|----------|---------|---------|------------------- ," `; @@ -354,8 +364,8 @@ a = false -------------|---------|----------|---------|---------|------------------- File | % Stmts | % Branch | % Funcs | % Lines | Uncovered Line #s -------------|---------|----------|---------|---------|------------------- -All files | 80 | 50 | 100 | 80 | - branches.js | 80 | 50 | 100 | 80 | 2,5-6,13 +All files | 80 | 40 | 100 | 80 | + branches.js | 80 | 40 | 100 | 80 | 2,5-6,13 -------------|---------|----------|---------|---------|------------------- ," `; @@ -369,8 +379,8 @@ covered ------------|---------|----------|---------|---------|------------------- File | % Stmts | % Branch | % Funcs | % Lines | Uncovered Line #s ------------|---------|----------|---------|---------|------------------- -All files | 85.19 | 83.33 | 60 | 85.19 | - classes.js | 85.19 | 83.33 | 60 | 85.19 | 6-7,15,21 +All files | 85.19 | 80 | 60 | 85.19 | + classes.js | 85.19 | 80 | 60 | 85.19 | 6-7,15,21 ------------|---------|----------|---------|---------|------------------- ," `; @@ -392,8 +402,8 @@ a = false -------------|---------|----------|---------|---------|------------------- File | % Stmts | % Branch | % Funcs | % Lines | Uncovered Line #s -------------|---------|----------|---------|---------|------------------- -All files | 75 | 55.56 | 100 | 75 | - branches.js | 75 | 55.56 | 100 | 75 | 4-7,13 +All files | 80 | 40 | 100 | 80 | + branches.js | 80 | 40 | 100 | 80 | 2,6-7,13 -------------|---------|----------|---------|---------|------------------- ," `; @@ -407,8 +417,8 @@ covered ------------|---------|----------|---------|---------|------------------- File | % Stmts | % Branch | % Funcs | % Lines | Uncovered Line #s ------------|---------|----------|---------|---------|------------------- -All files | 70.37 | 80 | 71.43 | 70.37 | - classes.js | 70.37 | 80 | 71.43 | 70.37 | 5-8,15-16,21-22 +All files | 77.78 | 83.33 | 60 | 77.78 | + classes.js | 77.78 | 83.33 | 60 | 77.78 | 7-8,15-16,21-22 ------------|---------|----------|---------|---------|------------------- ," `; @@ -436,9 +446,9 @@ covered ------------|---------|----------|---------|---------|------------------- File | % Stmts | % Branch | % Funcs | % Lines | Uncovered Line #s ------------|---------|----------|---------|---------|------------------- -All files | 78.57 | 85.71 | 60 | 78.57 | +All files | 78.57 | 83.33 | 60 | 78.57 | class-1.js | 100 | 100 | 100 | 100 | - class-2.js | 73.91 | 85.71 | 60 | 73.91 | 7-8,15-16,21-22 + class-2.js | 73.91 | 83.33 | 60 | 73.91 | 7-8,15-16,21-22 ------------|---------|----------|---------|---------|------------------- ," `; @@ -452,8 +462,8 @@ covered ------------------|---------|----------|---------|---------|------------------- File | % Stmts | % Branch | % Funcs | % Lines | Uncovered Line #s ------------------|---------|----------|---------|---------|------------------- -All files | 88.24 | 87.5 | 80 | 88.24 | - ts-node-basic.ts | 88.24 | 87.5 | 80 | 88.24 | 12-13,28-29 +All files | 88.24 | 85.71 | 80 | 88.24 | + ts-node-basic.ts | 88.24 | 85.71 | 80 | 88.24 | 12-13,28-29 ------------------|---------|----------|---------|---------|------------------- ," `; diff --git a/test/integration.js_10.snap b/test/integration.js_10.snap index e2ef280c..a8fd4723 100644 --- a/test/integration.js_10.snap +++ b/test/integration.js_10.snap @@ -1,5 +1,15 @@ // Jest Snapshot v1, https://goo.gl/fbAQLP +exports[`c8 /* c8 ignore next */ does not incorrectly mark previous branch as uncovered (see #254) 1`] = ` +",--------------|---------|----------|---------|---------|------------------- +File | % Stmts | % Branch | % Funcs | % Lines | Uncovered Line #s +--------------|---------|----------|---------|---------|------------------- +All files | 100 | 100 | 100 | 100 | + issue-254.js | 100 | 100 | 100 | 100 | +--------------|---------|----------|---------|---------|------------------- +," +`; + exports[`c8 /* c8 ignore next */ ignores lines with special comment 1`] = ` ",covered covered @@ -49,9 +59,9 @@ negative -----------------|---------|----------|---------|---------|------------------- File | % Stmts | % Branch | % Funcs | % Lines | Uncovered Line #s -----------------|---------|----------|---------|---------|------------------- -All files | 64.29 | 66.67 | 50 | 64.29 | - ts-compiled | 78.26 | 75 | 100 | 78.26 | - loaded.ts | 73.68 | 71.43 | 100 | 73.68 | 4-5,16-18 +All files | 64.29 | 57.14 | 50 | 64.29 | + ts-compiled | 78.26 | 66.67 | 100 | 78.26 | + loaded.ts | 73.68 | 66.67 | 100 | 73.68 | 4-5,16-18 main.ts | 100 | 100 | 100 | 100 | ts-compiled/dir | 0 | 0 | 0 | 0 | unloaded.ts | 0 | 0 | 0 | 0 | 1-5 @@ -394,8 +404,8 @@ covered -----------------------|---------|----------|---------|---------|------------------- File | % Stmts | % Branch | % Funcs | % Lines | Uncovered Line #s -----------------------|---------|----------|---------|---------|------------------- -All files | 81.82 | 87.5 | 60 | 81.82 | - classes.typescript.ts | 81.82 | 87.5 | 60 | 81.82 | 12-13,21-22,27-28 +All files | 81.82 | 85.71 | 60 | 81.82 | + classes.typescript.ts | 81.82 | 85.71 | 60 | 81.82 | 12-13,21-22,27-28 -----------------------|---------|----------|---------|---------|------------------- ," `; @@ -445,8 +455,8 @@ a = false -------------|---------|----------|---------|---------|------------------- File | % Stmts | % Branch | % Funcs | % Lines | Uncovered Line #s -------------|---------|----------|---------|---------|------------------- -All files | 75 | 55.56 | 100 | 75 | - branches.js | 75 | 55.56 | 100 | 75 | 4-7,13 +All files | 80 | 40 | 100 | 80 | + branches.js | 80 | 40 | 100 | 80 | 2,6-7,13 -------------|---------|----------|---------|---------|------------------- ," `; @@ -460,8 +470,8 @@ covered ------------|---------|----------|---------|---------|------------------- File | % Stmts | % Branch | % Funcs | % Lines | Uncovered Line #s ------------|---------|----------|---------|---------|------------------- -All files | 70.37 | 80 | 71.43 | 70.37 | - classes.js | 70.37 | 80 | 71.43 | 70.37 | 5-8,15-16,21-22 +All files | 77.78 | 83.33 | 60 | 77.78 | + classes.js | 77.78 | 83.33 | 60 | 77.78 | 7-8,15-16,21-22 ------------|---------|----------|---------|---------|------------------- ," `; @@ -489,9 +499,9 @@ covered ------------|---------|----------|---------|---------|------------------- File | % Stmts | % Branch | % Funcs | % Lines | Uncovered Line #s ------------|---------|----------|---------|---------|------------------- -All files | 78.57 | 85.71 | 60 | 78.57 | +All files | 78.57 | 83.33 | 60 | 78.57 | class-1.js | 100 | 100 | 100 | 100 | - class-2.js | 73.91 | 85.71 | 60 | 73.91 | 7-8,15-16,21-22 + class-2.js | 73.91 | 83.33 | 60 | 73.91 | 7-8,15-16,21-22 ------------|---------|----------|---------|---------|------------------- ," `;