Skip to content

Commit cd5d58b

Browse files
authored
fix: prevent birpc timeouts when Math.random mock is not restored (#3460)
1 parent 4e996ae commit cd5d58b

File tree

5 files changed

+40
-12
lines changed

5 files changed

+40
-12
lines changed

packages/ui/package.json

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -69,7 +69,7 @@
6969
"@vitest/ws-client": "workspace:*",
7070
"@vueuse/core": "^10.1.2",
7171
"ansi-to-html": "^0.7.2",
72-
"birpc": "0.2.11",
72+
"birpc": "0.2.12",
7373
"codemirror": "^5.65.13",
7474
"codemirror-theme-vars": "^0.1.2",
7575
"cypress": "^12.11.0",

packages/vitest/package.json

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -174,7 +174,7 @@
174174
"@types/micromatch": "^4.0.2",
175175
"@types/prompts": "^2.4.4",
176176
"@types/sinonjs__fake-timers": "^8.1.2",
177-
"birpc": "0.2.11",
177+
"birpc": "0.2.12",
178178
"chai-subset": "^1.6.0",
179179
"cli-truncate": "^3.1.0",
180180
"event-target-polyfill": "^0.0.3",

packages/ws-client/package.json

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -39,7 +39,7 @@
3939
"typecheck": "tsc --noEmit"
4040
},
4141
"dependencies": {
42-
"birpc": "0.2.11",
42+
"birpc": "0.2.12",
4343
"flatted": "^3.2.7",
4444
"ws": "^8.13.0"
4545
},

pnpm-lock.yaml

Lines changed: 8 additions & 8 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

test/core/test/mock-internals.test.ts

Lines changed: 29 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
import childProcess, { exec } from 'node:child_process'
22
import timers from 'node:timers'
3-
import { expect, test, vi } from 'vitest'
3+
import { type SpyInstance, afterEach, beforeEach, describe, expect, test, vi } from 'vitest'
44
import { execDefault, execHelloWorld, execImportAll } from '../src/exec'
55
import { dynamicImport } from '../src/dynamic-import'
66

@@ -28,3 +28,31 @@ test('mocked dynamically imported packages', async () => {
2828
expect(mod.default).toHaveProperty('clearInterval')
2929
expect(mod.default.clearInterval()).toBe('foo')
3030
})
31+
32+
describe('Math.random', () => {
33+
describe('mock is restored', () => {
34+
let spy: SpyInstance
35+
36+
beforeEach(() => {
37+
spy = vi.spyOn(Math, 'random').mockReturnValue(0.1)
38+
})
39+
afterEach(() => {
40+
spy.mockRestore()
41+
})
42+
43+
test('is mocked', () => {
44+
expect(Math.random()).toBe(0.1)
45+
})
46+
})
47+
48+
// This used to make dependencies stuck, e.g. birpc
49+
describe('mock is not restored and leaks', () => {
50+
beforeEach(() => {
51+
vi.spyOn(Math, 'random').mockReturnValue(0.1)
52+
})
53+
54+
test('is mocked', () => {
55+
expect(Math.random()).toBe(0.1)
56+
})
57+
})
58+
})

0 commit comments

Comments
 (0)