| FazBrowse GitHub Viewer | Trending | | Home |
| Tools: [Download Repo ZIP] [Original HTTPS Page] |
1 parent 97aac9f commit af7baef
6 files changed
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
@@ -409,6 +409,10 @@ class TestCoverage { | |||
| 409 | 409 | } | |
| 410 | 410 | const mappedStartOffset = this.entryToOffset(startEntry, mappedLines); | |
| 411 | 411 | const mappedEndOffset = this.entryToOffset(endEntry, mappedLines) + 1; | |
| 412 | + if (mappedStartOffset < 0 || mappedEndOffset < 1) { | ||
| 413 | + // The range is not mappable. Skip it. | ||
| 414 | + continue; | ||
| 415 | + } | ||
| 412 | 416 | for (let l = startEntry.originalLine; l <= endEntry.originalLine; l++) { | |
| 413 | 417 | mappedLines[l].count = count; | |
| 414 | 418 | } | |
@@ -433,7 +437,12 @@ class TestCoverage { | |||
| 433 | 437 | ||
| 434 | 438 | entryToOffset(entry, lines) { | |
| 435 | 439 | const line = MathMax(entry.originalLine, 0); | |
| 436 | - return MathMin(lines[line].startOffset + entry.originalColumn, lines[line].endOffset); | ||
| 440 | + const mappedLine = lines[line]; | ||
| 441 | + if (!mappedLine) { | ||
| 442 | + // Return -1 if the line is not mappable. | ||
| 443 | + return -1; | ||
| 444 | + } | ||
| 445 | + return MathMin(mappedLine.startOffset + entry.originalColumn, mappedLine.endOffset); | ||
| 437 | 446 | } | |
| 438 | 447 | ||
| 439 | 448 | mergeCoverage(merged, coverage) { | |
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
@@ -0,0 +1,3 @@ | |||
| 1 | + export default function bar() { | ||
| 2 | + return 'original bar'; | ||
| 3 | + } | ||
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
@@ -0,0 +1,3 @@ | |||
| 1 | + import bar from './bar.mts'; | ||
| 2 | + | ||
| 3 | + export const foo = () => bar(); | ||
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
@@ -0,0 +1,25 @@ | |||
| 1 | + import assert from 'node:assert/strict'; | ||
| 2 | + import { before, describe, it, mock } from 'node:test'; | ||
| 3 | + | ||
| 4 | + describe('foo', { concurrency: true }, () => { | ||
| 5 | + let barMock = mock.fn(); | ||
| 6 | + let foo; | ||
| 7 | + | ||
| 8 | + before(async () => { | ||
| 9 | + const barNamedExports = await import('../coverage/bar.mts') | ||
| 10 | + .then(({ default: _, ...rest }) => rest); | ||
| 11 | + | ||
| 12 | + mock.module('../coverage/bar.mts', { | ||
| 13 | + defaultExport: barMock, | ||
| 14 | + namedExports: barNamedExports, | ||
| 15 | + }); | ||
| 16 | + | ||
| 17 | + ({ foo } = await import('../coverage/foo.mts')); | ||
| 18 | + }); | ||
| 19 | + | ||
| 20 | + it('should do the thing', () => { | ||
| 21 | + barMock.mock.mockImplementationOnce(() => 42); | ||
| 22 | + | ||
| 23 | + assert.equal(foo(), 42); | ||
| 24 | + }); | ||
| 25 | + }); | ||
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
@@ -0,0 +1,39 @@ | |||
| 1 | + TAP version 13 | ||
| 2 | + # Subtest: foo | ||
| 3 | + # Subtest: should do the thing | ||
| 4 | + ok 1 - should do the thing | ||
| 5 | + --- | ||
| 6 | + duration_ms: * | ||
| 7 | + type: 'test' | ||
| 8 | + ... | ||
| 9 | + 1..1 | ||
| 10 | + ok 1 - foo | ||
| 11 | + --- | ||
| 12 | + duration_ms: * | ||
| 13 | + type: 'suite' | ||
| 14 | + ... | ||
| 15 | + 1..1 | ||
| 16 | + # tests 1 | ||
| 17 | + # suites 1 | ||
| 18 | + # pass 1 | ||
| 19 | + # fail 0 | ||
| 20 | + # cancelled 0 | ||
| 21 | + # skipped 0 | ||
| 22 | + # todo 0 | ||
| 23 | + # duration_ms * | ||
| 24 | + # start of coverage report | ||
| 25 | + # ---------------------------------------------------------------------------- | ||
| 26 | + # file | line % | branch % | funcs % | uncovered lines | ||
| 27 | + # ---------------------------------------------------------------------------- | ||
| 28 | + # test | | | | | ||
| 29 | + # fixtures | | | | | ||
| 30 | + # test-runner | | | | | ||
| 31 | + # coverage | | | | | ||
| 32 | + # bar.mts | 0.00 | 100.00 | 100.00 | 1-3 | ||
| 33 | + # foo.mts | 100.00 | 100.00 | 100.00 | | ||
| 34 | + # output | | | | | ||
| 35 | + # typescript-coverage.mts | 100.00 | 100.00 | 100.00 | | ||
| 36 | + # ---------------------------------------------------------------------------- | ||
| 37 | + # all files | 85.29 | 100.00 | 85.71 | | ||
| 38 | + # ---------------------------------------------------------------------------- | ||
| 39 | + # end of coverage report | ||
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
@@ -302,6 +302,15 @@ const tests = [ | |||
| 302 | 302 | flags: ['--test-reporter=tap', '--test-coverage-exclude=../output/**'], | |
| 303 | 303 | cwd: fixtures.path('test-runner/coverage-snap'), | |
| 304 | 304 | } : false, | |
| 305 | + process.features.inspector ? { | ||
| 306 | + name: 'test-runner/output/typescript-coverage.mts', | ||
| 307 | + flags: ['--disable-warning=ExperimentalWarning', | ||
| 308 | + '--test-reporter=tap', | ||
| 309 | + '--experimental-transform-types', | ||
| 310 | + '--experimental-test-module-mocks', | ||
| 311 | + '--experimental-test-coverage', | ||
| 312 | + '--test-coverage-exclude=!test/**'] | ||
| 313 | + } : false, | ||
| 305 | 314 | ] | |
| 306 | 315 | .filter(Boolean) | |
| 307 | 316 | .map(({ flags, name, tty, transform, cwd }) => ({ | |
| Back | FazBrowse Home | New Git URL |
0 commit comments