Skip to content

Commit d6ef0da

Browse files
authored
fix(cache): preserve test results from previous runs (#8043)
1 parent b9a312a commit d6ef0da

File tree

3 files changed

+33
-1
lines changed

3 files changed

+33
-1
lines changed

packages/vitest/src/node/cache/results.ts

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -45,8 +45,9 @@ export class ResultsCache {
4545

4646
const resultsCache = await fs.promises.readFile(this.cachePath, 'utf8')
4747
const { results, version } = JSON.parse(resultsCache || '[]')
48+
const [major, minor] = version.split('.')
4849
// handling changed in 0.30.0
49-
if (Number(version.split('.')[1]) >= 30) {
50+
if (major > 0 || Number(minor) >= 30) {
5051
this.cache = new Map(results)
5152
this.version = version
5253
results.forEach(([spec]: [string]) => {
Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,5 @@
1+
import { expect, test } from "vitest";
2+
3+
test('', () => {
4+
expect(true).toBe(true)
5+
})

test/config/test/cache.test.ts

Lines changed: 26 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,4 @@
1+
import { readFileSync } from 'node:fs'
12
import { resolve } from 'pathe'
23
import { describe, expect, test } from 'vitest'
34
import { runVitest } from '../../test-utils'
@@ -57,6 +58,31 @@ test('use cacheDir', async () => {
5758
expect(cachePath).toMatch(path)
5859
})
5960

61+
test('preserves previous test results', async () => {
62+
const firstRun = await runVitest({
63+
root,
64+
include: ['basic.test.ts'],
65+
})
66+
67+
expect(firstRun.stdout).toContain('✓ basic.test.ts >')
68+
expect(firstRun.stderr).toBe('')
69+
70+
const cachePath = firstRun.ctx!.cache.results.getCachePath()
71+
const firstRunCacheContent = readFileSync(cachePath!, 'utf-8')
72+
expect(firstRunCacheContent).toContain('basic.test.ts')
73+
74+
const secondRun = await runVitest({
75+
root,
76+
include: ['second.test.ts'],
77+
})
78+
expect(secondRun.stdout).toContain('✓ second.test.ts >')
79+
expect(secondRun.stderr).toBe('')
80+
81+
const secondRunCacheContent = readFileSync(cachePath!, 'utf-8')
82+
expect(secondRunCacheContent).toContain('basic.test.ts')
83+
expect(secondRunCacheContent).toContain('second.test.ts')
84+
})
85+
6086
describe('with optimizer enabled', () => {
6187
const deps = {
6288
optimizer: {

0 commit comments

Comments
 (0)