From 0c577b9bf8855dc0ccb6098cd43a25c528f6d7f5 Mon Sep 17 00:00:00 2001 From: smithc <954720+smithc@users.noreply.github.com> Date: Wed, 7 Sep 2022 03:10:07 -0400 Subject: [PATCH] fix: add missing code coverage ranges that span only a single character (#8911) --- src/common/Coverage.ts | 2 +- test/assets/jscoverage/involved.html | 1 + test/golden-chromium/jscoverage-involved.txt | 16 ++++++++++++---- test/src/coverage.spec.ts | 8 +++++--- 4 files changed, 19 insertions(+), 8 deletions(-) diff --git a/src/common/Coverage.ts b/src/common/Coverage.ts index 10b811b802ce8..a75a772a6980c 100644 --- a/src/common/Coverage.ts +++ b/src/common/Coverage.ts @@ -484,6 +484,6 @@ function convertToDisjointRanges( } // Filter out empty ranges. return results.filter(range => { - return range.end - range.start > 1; + return range.end - range.start > 0; }); } diff --git a/test/assets/jscoverage/involved.html b/test/assets/jscoverage/involved.html index 889c86bed58ed..fcc32ba2ca331 100644 --- a/test/assets/jscoverage/involved.html +++ b/test/assets/jscoverage/involved.html @@ -6,6 +6,7 @@ console.log(2); let x = 1 > 2 ? 'foo' : 'bar'; let y = 1 < 2 ? 'foo' : 'bar'; + let p = {a:1 > 2?function(){console.log('unused');}:function(){console.log('unused');}}; let z = () => {}; let q = () => {}; q(); diff --git a/test/golden-chromium/jscoverage-involved.txt b/test/golden-chromium/jscoverage-involved.txt index 6f28e1580ec9e..016b30bde8b54 100644 --- a/test/golden-chromium/jscoverage-involved.txt +++ b/test/golden-chromium/jscoverage-involved.txt @@ -16,13 +16,21 @@ }, { "start": 148, - "end": 160 + "end": 168 }, { - "start": 168, - "end": 207 + "start": 203, + "end": 204 + }, + { + "start": 238, + "end": 251 + }, + { + "start": 259, + "end": 298 } ], - "text": "\nfunction foo() {\n if (1 > 2)\n console.log(1);\n if (1 < 2)\n console.log(2);\n let x = 1 > 2 ? 'foo' : 'bar';\n let y = 1 < 2 ? 'foo' : 'bar';\n let z = () => {};\n let q = () => {};\n q();\n}\n\nfoo();\n" + "text": "\nfunction foo() {\n if (1 > 2)\n console.log(1);\n if (1 < 2)\n console.log(2);\n let x = 1 > 2 ? 'foo' : 'bar';\n let y = 1 < 2 ? 'foo' : 'bar';\n let p = {a:1 > 2?function(){console.log('unused');}:function(){console.log('unused');}};\n let z = () => {};\n let q = () => {};\n q();\n}\n\nfoo();\n" } ] \ No newline at end of file diff --git a/test/src/coverage.spec.ts b/test/src/coverage.spec.ts index e72789b1cff3b..6e0fc5fe55f93 100644 --- a/test/src/coverage.spec.ts +++ b/test/src/coverage.spec.ts @@ -104,9 +104,11 @@ describe('Coverage specs', function () { const coverage = await page.coverage.stopJSCoverage(); expect(coverage.length).toBe(1); const entry = coverage[0]!; - expect(entry.ranges.length).toBe(1); - const range = entry.ranges[0]!; - expect(entry.text.substring(range.start, range.end)).toBe( + expect(entry.ranges.length).toBe(2); + const range1 = entry.ranges[0]!; + expect(entry.text.substring(range1.start, range1.end)).toBe('\n'); + const range2 = entry.ranges[1]!; + expect(entry.text.substring(range2.start, range2.end)).toBe( `console.log('used!');` ); });