diff --git a/packages/coverage-istanbul/src/provider.ts b/packages/coverage-istanbul/src/provider.ts index e80029f51510..8c06ebd2800a 100644 --- a/packages/coverage-istanbul/src/provider.ts +++ b/packages/coverage-istanbul/src/provider.ts @@ -98,7 +98,10 @@ export class IstanbulCoverageProvider extends BaseCoverageProvider implements Co relativePath: !this.options.allowExternal, }) - this.coverageFilesDirectory = resolve(this.options.reportsDirectory, '.tmp') + const shard = this.ctx.config.shard + const tempDirectory = `.tmp${shard ? `-${shard.index}-${shard.count}` : ''}` + + this.coverageFilesDirectory = resolve(this.options.reportsDirectory, tempDirectory) } resolveOptions() { diff --git a/packages/coverage-v8/src/provider.ts b/packages/coverage-v8/src/provider.ts index 18e225c43be0..e2f7d617e086 100644 --- a/packages/coverage-v8/src/provider.ts +++ b/packages/coverage-v8/src/provider.ts @@ -101,7 +101,10 @@ export class V8CoverageProvider extends BaseCoverageProvider implements Coverage relativePath: !this.options.allowExternal, }) - this.coverageFilesDirectory = resolve(this.options.reportsDirectory, '.tmp') + const shard = this.ctx.config.shard + const tempDirectory = `.tmp${shard ? `-${shard.index}-${shard.count}` : ''}` + + this.coverageFilesDirectory = resolve(this.options.reportsDirectory, tempDirectory) } resolveOptions() { diff --git a/test/coverage-test/option-tests/shard.test.ts b/test/coverage-test/option-tests/shard.test.ts new file mode 100644 index 000000000000..85e7b7c1df8e --- /dev/null +++ b/test/coverage-test/option-tests/shard.test.ts @@ -0,0 +1,9 @@ +import { readdirSync } from 'node:fs' +import { expect, test } from 'vitest' + +test('temporary directory is postfixed with --shard value', () => { + const files = readdirSync('./coverage') + + expect(files).toContain('.tmp-1-4') + expect(files).not.toContain('.tmp') +}) diff --git a/test/coverage-test/testing-options.mjs b/test/coverage-test/testing-options.mjs index cf1150382979..4dfd1efcf60c 100644 --- a/test/coverage-test/testing-options.mjs +++ b/test/coverage-test/testing-options.mjs @@ -43,6 +43,14 @@ const testCases = [ }, assertionConfig: null, }, + { + testConfig: { + name: 'temp directory with shard', + include: ['option-tests/shard.test.ts'], + shard: '1/4', + }, + assertionConfig: null, + }, ] for (const provider of ['v8', 'istanbul']) {