Skip to content

Commit 9ece395

Browse files
authored
fix(vitest): fix <empty line> logs when interleaving console.log/error (#6644)
1 parent ba97f6a commit 9ece395

File tree

3 files changed

+42
-2
lines changed

3 files changed

+42
-2
lines changed

packages/vitest/src/runtime/console.ts

+1-1
Original file line numberDiff line numberDiff line change
@@ -84,7 +84,7 @@ export function createCustomConsole(defaultState?: WorkerGlobalState) {
8484
sendLog(type, taskId, content, buffer.length)
8585
}
8686
const timer = timers.get(taskId)!
87-
buffers.set(taskId, [])
87+
buffers.delete(taskId)
8888
if (type === 'stderr') {
8989
timer.stderrTime = 0
9090
}
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,9 @@
1+
import { test } from 'vitest';
2+
3+
test('repro', async () => {
4+
console.log(1);
5+
await new Promise((r) => setTimeout(r, 10));
6+
console.error(2);
7+
await new Promise((r) => setTimeout(r, 10));
8+
console.log(3);
9+
});

test/reporters/tests/console.test.ts

+32-1
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,6 @@
11
import { resolve } from 'pathe'
2-
import { expect, test } from 'vitest'
2+
import { type UserConsoleLog, expect, test } from 'vitest'
3+
import type { Reporter } from 'vitest/reporters'
34
import { DefaultReporter } from 'vitest/reporters'
45
import { runVitest } from '../../test-utils'
56

@@ -66,3 +67,33 @@ stderr | console.test.ts
6667
global stderr afterAll`,
6768
)
6869
})
70+
71+
test.for(['forks', 'threads'])('interleave (pool = %s)', async (pool) => {
72+
const logs: UserConsoleLog[] = []
73+
const { stderr } = await runVitest({
74+
root: './fixtures',
75+
pool,
76+
reporters: [
77+
{
78+
onUserConsoleLog(log) {
79+
logs.push(log)
80+
},
81+
} satisfies Reporter,
82+
],
83+
}, [resolve('./fixtures/console-interleave.test.ts')])
84+
expect(stderr).toBe('')
85+
expect(logs).toMatchObject([
86+
{
87+
type: 'stdout',
88+
content: expect.stringContaining('1'),
89+
},
90+
{
91+
type: 'stderr',
92+
content: expect.stringContaining('2'),
93+
},
94+
{
95+
type: 'stdout',
96+
content: expect.stringContaining('3'),
97+
},
98+
])
99+
})

0 commit comments

Comments
 (0)