GeezerVison is showing github.com — test_runner: fix typescript coverage · nodejs/node@e7285d4
File treeExpand file treeCollapse file tree Open diff view settings fixtures/test-runner/output
Expand file treeCollapse file tree Open diff view settings Collapse file Copy file name to clipboardExpand all lines: lib/internal/test_runner/coverage.js +3-3Lines changed: 3 additions & 3 deletions | Original file line number | Diff line number | Diff line change |
|---|
@@ -338,7 +338,7 @@ function mapRangeToLines(range, lines) { | 338 | 338 | mid = MathFloor((start + end) / 2); | 339 | 339 | let line = lines[mid]; | 340 | 340 |
| 341 | | - if (startOffset >= line.startOffset && startOffset <= line.endOffset) { | | 341 | + if (startOffset >= line?.startOffset && startOffset <= line?.endOffset) { | 342 | 342 | while (endOffset > line?.startOffset) { | 343 | 343 | // If the range is not covered, and the range covers the entire line, | 344 | 344 | // then mark that line as not covered. | @@ -363,7 +363,7 @@ function mapRangeToLines(range, lines) { | 363 | 363 | } | 364 | 364 |
| 365 | 365 | break; | 366 | | - } else if (startOffset >= line.endOffset) { | | 366 | + } else if (startOffset >= line?.endOffset) { | 367 | 367 | start = mid + 1; | 368 | 368 | } else { | 369 | 369 | end = mid - 1; | @@ -538,4 +538,4 @@ function doesRangeContainOtherRange(range, otherRange) { | 538 | 538 | range.endOffset >= otherRange.endOffset; | 539 | 539 | } | 540 | 540 |
| 541 | | -module.exports = { setupCoverage }; | | 541 | +module.exports = { setupCoverage, TestCoverage }; |
Collapse file Copy file name to clipboardExpand all lines: lib/internal/test_runner/test.js +2-2Lines changed: 2 additions & 2 deletions | 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 | } | |
Collapse file Copy file name to clipboard +13Lines changed: 13 additions & 0 deletions | Original file line number | Diff line number | Diff line change |
|---|
| | 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 | + |
Collapse file Copy file name to clipboard +16Lines changed: 16 additions & 0 deletions | Original file line number | Diff line number | Diff line change |
|---|
| | 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 * |
Collapse file Copy file name to clipboardExpand all lines: test/parallel/test-runner-output.mjs +1Lines changed: 1 addition & 0 deletions | 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 }) => ({ | |
|