Skip to content

Throw error "Maximum call stack size exceeded" on rerun with coverage #9093

@apponly

Description

@apponly

Describe the bug

private invalidateTree(node: Vite.EnvironmentModuleNode, moduleGraph: Vite.EnvironmentModuleGraph, seen: Set<Vite.EnvironmentModuleNode>) {
if (seen.has(node)) {
return
}
if (node.id && !this.transformedModuleIds.has(node.id)) {
moduleGraph.invalidateModule(node, seen)
}
node.importedModules.forEach((mod) => {
this.invalidateTree(mod, moduleGraph, seen)
})
}

An infinite loop caused by circular dependencies in this function.

Reproduction

  1. prepare circular deps for test
  2. in vscode vitest extension, run the test with coverage
  3. rerun the test with coverage
  4. throw an error "Failed to enable coverage. Maximum call stack size exceeded. Check the output for more details."
Screen.Recording.2025-11-24.at.22.25.42.mp4

System Info

- vitest: 4.0.13
- @vitest/coverage-istanbul: 4.0.13

Used Package Manager

pnpm

Validations

Metadata

Metadata

Assignees

No one assigned

    Type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions