From de5af2939099c448ba179341debf7d376fd9fdc5 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Ari=20Perkki=C3=B6?= Date: Sun, 18 Oct 2026 16:27:45 +0300 Subject: [PATCH] fix(coverage): v8 `autoAttachSubprocess` to use `.tmp` directory (#11632) --- packages/coverage-v8/src/index.ts | 2 +- .../test/temporary-files.test.ts | 28 +++++++++++++++++-- 2 files changed, 26 insertions(+), 4 deletions(-) diff --git a/packages/coverage-v8/src/index.ts b/packages/coverage-v8/src/index.ts index 962e18e63..f37440da8 100644 --- a/packages/coverage-v8/src/index.ts +++ b/packages/coverage-v8/src/index.ts @@ -31,7 +31,7 @@ const mod: CoverageProviderModule & { enabled = true if (autoAttachSubprocess) { - this.extendedContextCoverageDir = resolve(reportsDirectory, 'tmp', randomUUID()) + this.extendedContextCoverageDir = resolve(reportsDirectory, '.tmp', randomUUID()) process.env.NODE_V8_COVERAGE = this.extendedContextCoverageDir } diff --git a/test/coverage-test/test/temporary-files.test.ts b/test/coverage-test/test/temporary-files.test.ts index b2264458e..fd527b2b2 100644 --- a/test/coverage-test/test/temporary-files.test.ts +++ b/test/coverage-test/test/temporary-files.test.ts @@ -1,7 +1,7 @@ import { readdirSync } from 'node:fs' import { resolve } from 'node:path' import { expect } from 'vitest' -import { runVitest, test } from '../utils' +import { isBrowser, isV8Provider, runVitest, test } from '../utils' test('temporary files are removed after test', async () => { await runVitest({ @@ -12,9 +12,31 @@ test('temporary files are removed after test', async () => { const coveragePath = resolve('./coverage') const files = readdirSync(coveragePath) - expect(files).not.toContain('.tmp') + expect.soft(files).not.toContain('.tmp') - expect(files).toMatchInlineSnapshot(` + expect.soft(files).toMatchInlineSnapshot(` + [ + "coverage-final.json", + ] + `) +}) + +test('temporary files from autoAttachSubprocess are removed after test', async ({ skip }) => { + skip(!isV8Provider() || isBrowser(), 'V8 + node only feature') + + await runVitest({ + include: ['fixtures/test/child-process.test.ts'], + pool: 'forks', + coverage: { reporter: 'json', autoAttachSubprocess: true }, + }) + + const coveragePath = resolve('./coverage') + const files = readdirSync(coveragePath) + + expect.soft(files).not.toContain('.tmp') + expect.soft(files).not.toContain('tmp') + + expect.soft(files).toMatchInlineSnapshot(` [ "coverage-final.json", ] -- 2.54.0