|
| 1 | +import { createRequire } from 'node:module' |
| 2 | +import { expect } from 'vitest' |
| 3 | +import { coverageTest, normalizeURL, readCoverageMap, runVitest, test } from '../utils' |
| 4 | + |
| 5 | +test('logs warning but doesn\'t crash when coverage conversion fails', async () => { |
| 6 | + const { stderr, exitCode } = await runVitest({ |
| 7 | + include: [normalizeURL(import.meta.url)], |
| 8 | + coverage: { reporter: 'json', include: ['fixtures/src/**'], all: false }, |
| 9 | + }, { throwOnError: false }) |
| 10 | + |
| 11 | + // Logged warning should not set erroneous exit code |
| 12 | + expect(exitCode).toBe(0) |
| 13 | + |
| 14 | + expect(stderr).toMatch('Failed to convert coverage for file://') |
| 15 | + expect(stderr).toMatch('/fixtures/src/cjs-package/target.js.') |
| 16 | + expect(stderr).toMatch('TypeError: Cannot read properties of undefined (reading \'endCol\')') |
| 17 | + |
| 18 | + const coverageMap = await readCoverageMap() |
| 19 | + |
| 20 | + expect(coverageMap.files()).toMatchInlineSnapshot(` |
| 21 | + [ |
| 22 | + "<process-cwd>/fixtures/src/cjs-package/entry.js", |
| 23 | + "<process-cwd>/fixtures/src/cjs-package/target.js", |
| 24 | + ] |
| 25 | + `) |
| 26 | +}) |
| 27 | + |
| 28 | +coverageTest('load file both from Vite and outside it', async () => { |
| 29 | + const entry = createRequire(import.meta.url)('../fixtures/src/cjs-package' as any) |
| 30 | + const target = await import('../fixtures/src/cjs-package/target.js' as any) |
| 31 | + |
| 32 | + expect(entry).toBe('Entry here') |
| 33 | + expect(target.default).toStrictEqual({ |
| 34 | + debug: 0, |
| 35 | + error: 3, |
| 36 | + fatal: 4, |
| 37 | + info: 1, |
| 38 | + warn: 2, |
| 39 | + }) |
| 40 | +}) |
0 commit comments