| FazBrowse GitHub Viewer | Trending | | Home |
| Tools: [Download Repo ZIP] [Original HTTPS Page] |
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
@@ -313,7 +313,7 @@ function mapRangeToLines(range, lines) { | |||
| 313 | 313 | mid = MathFloor((start + end) / 2); | |
| 314 | 314 | let line = lines[mid]; | |
| 315 | 315 | ||
| 316 | - if (startOffset >= line.startOffset && startOffset <= line.endOffset) { | ||
| 316 | + if (startOffset >= line?.startOffset && startOffset <= line?.endOffset) { | ||
| 317 | 317 | while (endOffset > line?.startOffset) { | |
| 318 | 318 | // If the range is not covered, and the range covers the entire line, | |
| 319 | 319 | // then mark that line as not covered. | |
@@ -333,7 +333,7 @@ function mapRangeToLines(range, lines) { | |||
| 333 | 333 | } | |
| 334 | 334 | ||
| 335 | 335 | break; | |
| 336 | - } else if (startOffset >= line.endOffset) { | ||
| 336 | + } else if (startOffset >= line?.endOffset) { | ||
| 337 | 337 | start = mid + 1; | |
| 338 | 338 | } else { | |
| 339 | 339 | end = mid - 1; | |
@@ -508,4 +508,4 @@ function doesRangeContainOtherRange(range, otherRange) { | |||
| 508 | 508 | range.endOffset >= otherRange.endOffset; | |
| 509 | 509 | } | |
| 510 | 510 | ||
| 511 | - module.exports = { setupCoverage }; | ||
| 511 | + module.exports = { setupCoverage, TestCoverage }; | ||
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
@@ -737,6 +737,8 @@ class Test extends AsyncResource { | |||
| 737 | 737 | this.reported = true; | |
| 738 | 738 | reporter.plan(nesting, loc, harness.counters.topLevel); | |
| 739 | 739 | ||
| 740 | + // Call this harness.coverage() before collecting diagnostics, since failure to collect coverage is a diagnostic. | ||
| 741 | + const coverage = harness.coverage(); | ||
| 740 | 742 | for (let i = 0; i < diagnostics.length; i++) { | |
| 741 | 743 | reporter.diagnostic(nesting, loc, diagnostics[i]); | |
| 742 | 744 | } | |
@@ -750,8 +752,6 @@ class Test extends AsyncResource { | |||
| 750 | 752 | reporter.diagnostic(nesting, loc, `todo ${harness.counters.todo}`); | |
| 751 | 753 | reporter.diagnostic(nesting, loc, `duration_ms ${this.duration()}`); | |
| 752 | 754 | ||
| 753 | - const coverage = harness.coverage(); | ||
| 754 | - | ||
| 755 | 755 | if (coverage) { | |
| 756 | 756 | reporter.coverage(nesting, loc, coverage); | |
| 757 | 757 | } | |
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
@@ -0,0 +1,13 @@ | |||
| 1 | + // Flags: --expose-internals --experimental-test-coverage | ||
| 2 | + | ||
| 3 | + 'use strict'; | ||
| 4 | + require('../../../common'); | ||
| 5 | + const { TestCoverage } = require('internal/test_runner/coverage'); | ||
| 6 | + const { test, mock } = require('node:test'); | ||
| 7 | + | ||
| 8 | + mock.method(TestCoverage.prototype, 'summary', () => { | ||
| 9 | + throw new Error('Failed to collect coverage'); | ||
| 10 | + }); | ||
| 11 | + | ||
| 12 | + test('ok'); | ||
| 13 | + | ||
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
@@ -0,0 +1,16 @@ | |||
| 1 | + TAP version 13 | ||
| 2 | + # Subtest: ok | ||
| 3 | + ok 1 - ok | ||
| 4 | + --- | ||
| 5 | + duration_ms: * | ||
| 6 | + ... | ||
| 7 | + 1..1 | ||
| 8 | + # Warning: Could not report code coverage. Error: Failed to collect coverage | ||
| 9 | + # tests 1 | ||
| 10 | + # suites 0 | ||
| 11 | + # pass 1 | ||
| 12 | + # fail 0 | ||
| 13 | + # cancelled 0 | ||
| 14 | + # skipped 0 | ||
| 15 | + # todo 0 | ||
| 16 | + # duration_ms * | ||
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
@@ -87,6 +87,7 @@ const tests = [ | |||
| 87 | 87 | replaceTestDuration, | |
| 88 | 88 | ), | |
| 89 | 89 | }, | |
| 90 | + process.features.inspector ? { name: 'test-runner/output/coverage_failure.js' } : false, | ||
| 90 | 91 | ] | |
| 91 | 92 | .filter(Boolean) | |
| 92 | 93 | .map(({ name, tty, transform }) => ({ | |
| Back | FazBrowse Home | New Git URL |
0 commit comments