|
1 | 1 | import type { HtmlTagDescriptor } from 'vite' |
2 | 2 | import type { Plugin } from 'vitest/config' |
3 | | -import type { Vitest } from 'vitest/node' |
4 | 3 | import type { ParentBrowserProject } from './projectParent' |
5 | 4 | import { createReadStream, readFileSync } from 'node:fs' |
6 | 5 | import { createRequire } from 'node:module' |
7 | 6 | import { dynamicImportPlugin } from '@vitest/mocker/node' |
8 | 7 | import { toArray } from '@vitest/utils/helpers' |
9 | 8 | import MagicString from 'magic-string' |
10 | | -import { basename, dirname, join, resolve } from 'pathe' |
| 9 | +import { dirname, join, resolve } from 'pathe' |
11 | 10 | import sirv from 'sirv' |
12 | | -import { coverageConfigDefaults } from 'vitest/config' |
13 | 11 | import { |
14 | 12 | isFileServingAllowed, |
15 | 13 | isValidApiRequest, |
@@ -63,18 +61,12 @@ export default (parentServer: ParentBrowserProject, base = '/'): Plugin[] => { |
63 | 61 | }, |
64 | 62 | ) |
65 | 63 |
|
66 | | - const coverageFolder = resolveCoverageFolder(parentServer.vitest) |
67 | | - const coveragePath = coverageFolder ? coverageFolder[1] : undefined |
68 | | - if (coveragePath && base === coveragePath) { |
69 | | - throw new Error( |
70 | | - `The ui base path and the coverage path cannot be the same: ${base}, change coverage.reportsDirectory`, |
71 | | - ) |
72 | | - } |
73 | | - |
74 | | - if (coverageFolder) { |
| 64 | + // Serve coverage HTML at ./coverage if configured |
| 65 | + const coverageHtmlDir = parentServer.vitest.config.coverage?.htmlDir |
| 66 | + if (coverageHtmlDir) { |
75 | 67 | server.middlewares.use( |
76 | | - coveragePath!, |
77 | | - sirv(coverageFolder[0], { |
| 68 | + '/__vitest_test__/coverage', |
| 69 | + sirv(coverageHtmlDir, { |
78 | 70 | single: true, |
79 | 71 | dev: true, |
80 | 72 | setHeaders: (res) => { |
@@ -604,43 +596,6 @@ function getRequire() { |
604 | 596 | return _require |
605 | 597 | } |
606 | 598 |
|
607 | | -function resolveCoverageFolder(vitest: Vitest) { |
608 | | - const options = vitest.config |
609 | | - const coverageOptions = vitest._coverageOptions |
610 | | - const htmlReporter = coverageOptions?.enabled |
611 | | - ? toArray(options.coverage.reporter).find((reporter) => { |
612 | | - if (typeof reporter === 'string') { |
613 | | - return reporter === 'html' |
614 | | - } |
615 | | - |
616 | | - return reporter[0] === 'html' |
617 | | - }) |
618 | | - : undefined |
619 | | - |
620 | | - if (!htmlReporter) { |
621 | | - return undefined |
622 | | - } |
623 | | - |
624 | | - // reportsDirectory not resolved yet |
625 | | - const root = resolve( |
626 | | - options.root || process.cwd(), |
627 | | - coverageOptions.reportsDirectory || coverageConfigDefaults.reportsDirectory, |
628 | | - ) |
629 | | - |
630 | | - const subdir |
631 | | - = Array.isArray(htmlReporter) |
632 | | - && htmlReporter.length > 1 |
633 | | - && 'subdir' in htmlReporter[1] |
634 | | - ? htmlReporter[1].subdir |
635 | | - : undefined |
636 | | - |
637 | | - if (!subdir || typeof subdir !== 'string') { |
638 | | - return [root, `/${basename(root)}/`] |
639 | | - } |
640 | | - |
641 | | - return [resolve(root, subdir), `/${basename(root)}/${subdir}/`] |
642 | | -} |
643 | | - |
644 | 599 | const postfixRE = /[?#].*$/ |
645 | 600 | function cleanUrl(url: string): string { |
646 | 601 | return url.replace(postfixRE, '') |
|
0 commit comments