diff --git a/packages/vitest/src/node/hoistMocks.ts b/packages/vitest/src/node/hoistMocks.ts index 1980a630b..064cdba22 100644 --- a/packages/vitest/src/node/hoistMocks.ts +++ b/packages/vitest/src/node/hoistMocks.ts @@ -59,12 +59,11 @@ export function getBetterEnd(code: string, node: Node) { return end } -const regexpHoistable = /^[ \t]*\b(vi|vitest)\s*\.\s*(mock|unmock|hoisted)\(/m -const regexpAssignedHoisted = /=[ \t]*(\bawait|)[ \t]*\b(vi|vitest)\s*\.\s*hoisted\(/ +const regexpHoistable = /[ \t]*\b(vi|vitest)\s*\.\s*(mock|unmock|hoisted)\(/ const hashbangRE = /^#!.*\n/ export function hoistMocks(code: string, id: string, parse: PluginContext['parse']) { - const needHoisting = regexpHoistable.test(code) || regexpAssignedHoisted.test(code) + const needHoisting = regexpHoistable.test(code) if (!needHoisting) return diff --git a/test/core/test/injector-mock.test.ts b/test/core/test/injector-mock.test.ts index 158529808..6ae3fbf6b 100644 --- a/test/core/test/injector-mock.test.ts +++ b/test/core/test/injector-mock.test.ts @@ -1182,6 +1182,24 @@ console.log(foo + 2) console.log(__vi_import_0__.foo + 2)" `) }) + + test('handle single "await vi.hoisted"', async () => { + expect( + hoistSimpleCode(` +import { vi } from 'vitest'; +1234; +await vi + .hoisted(() => {}); + `), + ).toMatchInlineSnapshot(` + "const { vi } = await import('vitest') + await vi + .hoisted(() => {}); + + + 1234;" + `) + }) }) describe('throws an error when nodes are incompatible', () => {