-
-
Notifications
You must be signed in to change notification settings - Fork 111
Description
Describe the bug
Under certain conditions, the Vitest extension crashes on startup with the error
[Error RangeError] Maximum call stack size exceeded
The stack trace shows that the recursion occurs within TestTree.getOrCreateFolderTestItem
By manually modifying the local distribution of the extension to log out the file path, I see the following
[INFO 11:18:17 AM] [API] /Users/eirikurtorfason/projects/spine/libs/typescript/react/ui/src/Button
[INFO 11:18:17 AM] [API] /Users/eirikurtorfason/projects/spine/libs/typescript/react/ui/src
[INFO 11:18:17 AM] [API] /Users/eirikurtorfason/projects/spine/libs/typescript/react/ui
[INFO 11:18:17 AM] [API] /Users/eirikurtorfason/projects/spine/libs/typescript/react
[INFO 11:18:17 AM] [API] /Users/eirikurtorfason/projects/spine/libs/typescript
[INFO 11:18:17 AM] [API] /Users/eirikurtorfason/projects/spine/libs
[INFO 11:18:17 AM] [API] /Users/eirikurtorfason/projects/spine
[INFO 11:18:17 AM] [API] /Users/eirikurtorfason/projects
[INFO 11:18:17 AM] [API] /Users/eirikurtorfason
[INFO 11:18:17 AM] [API] /Users
[INFO 11:18:17 AM] [API] /
[INFO 11:18:17 AM] [API] /
[INFO 11:18:17 AM] [API] /
[INFO 11:18:17 AM] [API] /
[INFO 11:18:17 AM] [API] /
...repeated until the stack is exhausted
The problematic line is likely this one
const parentItem = this.getOrCreateFolderTestItem(api, dirname(file))It would appear that there's an assumption that a cached result will be hit during a reverse traversal through the directory path. When that precondition is not met, an infinite recursion occurs.
Reproduction
Here's a GitHub repo that can be used to reproduce the error
https://github.com/eirikur-nc/vitest-explorer-bug-repro
It contains a multi-root workspace file and a vitest.workspace.ts file.
I can add one project to vitest.workspace.ts
export default ['apps/web']As soon as I add the second one the error occurs
export default ['apps/web', 'libs/utils']My VS code workspace has a folder definition for the former project. The second project does not. It's located under a symlinked root folder.
{
"folders": [
{
"name": "<root>",
"path": ".root-symlink"
},
{
"name": "apps/web",
"path": "apps/web"
},Output
[INFO 10:58:15 PM] [v1.20.3] Vitest extension is activated because Vitest is installed or there is a Vite/Vitest config file in the workspace.
[INFO 10:58:15 PM] [API] Resolving workspace configs: vitest.workspace.ts
[INFO 10:58:15 PM] [API] Running Vitest v3.2.3 (.root-symlink/vitest.workspace.ts) with "/Users/eirikurtorfason/.local/state/fnm_multishells/41974_1749766660214/bin/node /Users/eirikurtorfason/.vscode/extensions/vitest.explorer-1.20.3/dist/worker.js"
[INFO 10:58:15 PM] [Worker] DEPRECATED The workspace file is deprecated and will be removed in the next major. Please, use the `projects` field in the root config file instead.
[INFO 10:58:15 PM] [API] Resolving configs: src/vitest.config.ts
[INFO 10:58:15 PM] [API] Ignoring config src/vitest.config.ts because there is a workspace config in the parent folder
[Error 10:58:16 PM] [Error RangeError] Maximum call stack size exceeded
RangeError: Maximum call stack size exceeded
at String.replace (<anonymous>)
at Bt (/Users/eirikurtorfason/.vscode/extensions/vitest.explorer-1.20.3/dist/extension.js:7:36244)
at B (/Users/eirikurtorfason/.vscode/extensions/vitest.explorer-1.20.3/dist/extension.js:7:37965)
at Fr.getOrCreateFolderTestItem (/Users/eirikurtorfason/.vscode/extensions/vitest.explorer-1.20.3/dist/extension.js:17:4376)
at Fr.getOrCreateFolderTestItem (/Users/eirikurtorfason/.vscode/extensions/vitest.explorer-1.20.3/dist/extension.js:17:4348)
at Fr.getOrCreateFolderTestItem (/Users/eirikurtorfason/.vscode/extensions/vitest.explorer-1.20.3/dist/extension.js:17:4348)
at Fr.getOrCreateFolderTestItem (/Users/eirikurtorfason/.vscode/extensions/vitest.explorer-1.20.3/dist/extension.js:17:4348)
at Fr.getOrCreateFolderTestItem (/Users/eirikurtorfason/.vscode/extensions/vitest.explorer-1.20.3/dist/extension.js:17:4348)
at Fr.getOrCreateFolderTestItem (/Users/eirikurtorfason/.vscode/extensions/vitest.explorer-1.20.3/dist/extension.js:17:4348)
at Fr.getOrCreateFolderTestItem (/Users/eirikurtorfason/.vscode/extensions/vitest.explorer-1.20.3/dist/extension.js:17:4348)
at Fr.getOrCreateFolderTestItem (/Users/eirikurtorfason/.vscode/extensions/vitest.explorer-1.20.3/dist/extension.js:17:4348)
at Fr.getOrCreateFolderTestItem (/Users/eirikurtorfason/.vscode/extensions/vitest.explorer-1.20.3/dist/extension.js:17:4348)
at Fr.getOrCreateFolderTestItem (/Users/eirikurtorfason/.vscode/extensions/vitest.explorer-1.20.3/dist/extension.js:17:4348)
at Fr.getOrCreateFolderTestItem (/Users/eirikurtorfason/.vscode/extensions/vitest.explorer-1.20.3/dist/extension.js:17:4348)
at Fr.getOrCreateFolderTestItem (/Users/eirikurtorfason/.vscode/extensions/vitest.explorer-1.20.3/dist/extension.js:17:4348)
at Fr.getOrCreateFolderTestItem (/Users/eirikurtorfason/.vscode/extensions/vitest.explorer-1.20.3/dist/extension.js:17:4348)
at Fr.getOrCreateFolderTestItem (/Users/eirikurtorfason/.vscode/extensions/vitest.explorer-1.20.3/dist/extension.js:17:4348)
at Fr.getOrCreateFolderTestItem (/Users/eirikurtorfason/.vscode/extensions/vitest.explorer-1.20.3/dist/extension.js:17:4348)
at Fr.getOrCreateFolderTestItem (/Users/eirikurtorfason/.vscode/extensions/vitest.explorer-1.20.3/dist/extension.js:17:4348)
at Fr.getOrCreateFolderTestItem (/Users/eirikurtorfason/.vscode/extensions/vitest.explorer-1.20.3/dist/extension.js:17:4348)
at Fr.getOrCreateFolderTestItem (/Users/eirikurtorfason/.vscode/extensions/vitest.explorer-1.20.3/dist/extension.js:17:4348)
at Fr.getOrCreateFolderTestItem (/Users/eirikurtorfason/.vscode/extensions/vitest.explorer-1.20.3/dist/extension.js:17:4348)
at Fr.getOrCreateFolderTestItem (/Users/eirikurtorfason/.vscode/extensions/vitest.explorer-1.20.3/dist/extension.js:17:4348)
at Fr.getOrCreateFolderTestItem (/Users/eirikurtorfason/.vscode/extensions/vitest.explorer-1.20.3/dist/extension.js:17:4348)
at Fr.getOrCreateFolderTestItem (/Users/eirikurtorfason/.vscode/extensions/vitest.explorer-1.20.3/dist/extension.js:17:4348)
at Fr.getOrCreateFolderTestItem (/Users/eirikurtorfason/.vscode/extensions/vitest.explorer-1.20.3/dist/extension.js:17:4348)
at Fr.getOrCreateFolderTestItem (/Users/eirikurtorfason/.vscode/extensions/vitest.explorer-1.20.3/dist/extension.js:17:4348)
at Fr.getOrCreateFolderTestItem (/Users/eirikurtorfason/.vscode/extensions/vitest.explorer-1.20.3/dist/extension.js:17:4348)
at Fr.getOrCreateFolderTestItem (/Users/eirikurtorfason/.vscode/extensions/vitest.explorer-1.20.3/dist/extension.js:17:4348)
at Fr.getOrCreateFolderTestItem (/Users/eirikurtorfason/.vscode/extensions/vitest.explorer-1.20.3/dist/extension.js:17:4348)
at Fr.getOrCreateFolderTestItem (/Users/eirikurtorfason/.vscode/extensions/vitest.explorer-1.20.3/dist/extension.js:17:4348)
at Fr.getOrCreateFolderTestItem (/Users/eirikurtorfason/.vscode/extensions/vitest.explorer-1.20.3/dist/extension.js:17:4348)
at Fr.getOrCreateFolderTestItem (/Users/eirikurtorfason/.vscode/extensions/vitest.explorer-1.20.3/dist/extension.js:17:4348)
at Fr.getOrCreateFolderTestItem (/Users/eirikurtorfason/.vscode/extensions/vitest.explorer-1.20.3/dist/extension.js:17:4348)
at Fr.getOrCreateFolderTestItem (/Users/eirikurtorfason/.vscode/extensions/vitest.explorer-1.20.3/dist/extension.js:17:4348)
at Fr.getOrCreateFolderTestItem (/Users/eirikurtorfason/.vscode/extensions/vitest.explorer-1.20.3/dist/extension.js:17:4348)
at Fr.getOrCreateFolderTestItem (/Users/eirikurtorfason/.vscode/extensions/vitest.explorer-1.20.3/dist/extension.js:17:4348)
at Fr.getOrCreateFolderTestItem (/Users/eirikurtorfason/.vscode/extensions/vitest.explorer-1.20.3/dist/extension.js:17:4348)
at Fr.getOrCreateFolderTestItem (/Users/eirikurtorfason/.vscode/extensions/vitest.explorer-1.20.3/dist/extension.js:17:4348)
at Fr.getOrCreateFolderTestItem (/Users/eirikurtorfason/.vscode/extensions/vitest.explorer-1.20.3/dist/extension.js:17:4348)
at Fr.getOrCreateFolderTestItem (/Users/eirikurtorfason/.vscode/extensions/vitest.explorer-1.20.3/dist/extension.js:17:4348)
at Fr.getOrCreateFolderTestItem (/Users/eirikurtorfason/.vscode/extensions/vitest.explorer-1.20.3/dist/extension.js:17:4348)
at Fr.getOrCreateFolderTestItem (/Users/eirikurtorfason/.vscode/extensions/vitest.explorer-1.20.3/dist/extension.js:17:4348)
at Fr.getOrCreateFolderTestItem (/Users/eirikurtorfason/.vscode/extensions/vitest.explorer-1.20.3/dist/extension.js:17:4348)
at Fr.getOrCreateFolderTestItem (/Users/eirikurtorfason/.vscode/extensions/vitest.explorer-1.20.3/dist/extension.js:17:4348)
at Fr.getOrCreateFolderTestItem (/Users/eirikurtorfason/.vscode/extensions/vitest.explorer-1.20.3/dist/extension.js:17:4348)
at Fr.getOrCreateFolderTestItem (/Users/eirikurtorfason/.vscode/extensions/vitest.explorer-1.20.3/dist/extension.js:17:4348)
at Fr.getOrCreateFolderTestItem (/Users/eirikurtorfason/.vscode/extensions/vitest.explorer-1.20.3/dist/extension.js:17:4348)
at Fr.getOrCreateFolderTestItem (/Users/eirikurtorfason/.vscode/extensions/vitest.explorer-1.20.3/dist/extension.js:17:4348)
at Fr.getOrCreateFolderTestItem (/Users/eirikurtorfason/.vscode/extensions/vitest.explorer-1.20.3/dist/extension.js:17:4348)
at Fr.getOrCreateFolderTestItem (/Users/eirikurtorfason/.vscode/extensions/vitest.explorer-1.20.3/dist/extension.js:17:4348)
at Fr.getOrCreateFolderTestItem (/Users/eirikurtorfason/.vscode/extensions/vitest.explorer-1.20.3/dist/extension.js:17:4348)
at Fr.getOrCreateFolderTestItem (/Users/eirikurtorfason/.vscode/extensions/vitest.explorer-1.20.3/dist/extension.js:17:4348)
at Fr.getOrCreateFolderTestItem (/Users/eirikurtorfason/.vscode/extensions/vitest.explorer-1.20.3/dist/extension.js:17:4348)
at Fr.getOrCreateFolderTestItem (/Users/eirikurtorfason/.vscode/extensions/vitest.explorer-1.20.3/dist/extension.js:17:4348)
at Fr.getOrCreateFolderTestItem (/Users/eirikurtorfason/.vscode/extensions/vitest.explorer-1.20.3/dist/extension.js:17:4348)
at Fr.getOrCreateFolderTestItem (/Users/eirikurtorfason/.vscode/extensions/vitest.explorer-1.20.3/dist/extension.js:17:4348)
at Fr.getOrCreateFolderTestItem (/Users/eirikurtorfason/.vscode/extensions/vitest.explorer-1.20.3/dist/extension.js:17:4348)
at Fr.getOrCreateFolderTestItem (/Users/eirikurtorfason/.vscode/extensions/vitest.explorer-1.20.3/dist/extension.js:17:4348)
at Fr.getOrCreateFolderTestItem (/Users/eirikurtorfason/.vscode/extensions/vitest.explorer-1.20.3/dist/extension.js:17:4348)
at Fr.getOrCreateFolderTestItem (/Users/eirikurtorfason/.vscode/extensions/vitest.explorer-1.20.3/dist/extension.js:17:4348)
at Fr.getOrCreateFolderTestItem (/Users/eirikurtorfason/.vscode/extensions/vitest.explorer-1.20.3/dist/extension.js:17:4348)
at Fr.getOrCreateFolderTestItem (/Users/eirikurtorfason/.vscode/extensions/vitest.explorer-1.20.3/dist/extension.js:17:4348)
at Fr.getOrCreateFolderTestItem (/Users/eirikurtorfason/.vscode/extensions/vitest.explorer-1.20.3/dist/extension.js:17:4348)
at Fr.getOrCreateFolderTestItem (/Users/eirikurtorfason/.vscode/extensions/vitest.explorer-1.20.3/dist/extension.js:17:4348)
at Fr.getOrCreateFolderTestItem (/Users/eirikurtorfason/.vscode/extensions/vitest.explorer-1.20.3/dist/extension.js:17:4348)
at Fr.getOrCreateFolderTestItem (/Users/eirikurtorfason/.vscode/extensions/vitest.explorer-1.20.3/dist/extension.js:17:4348)
at Fr.getOrCreateFolderTestItem (/Users/eirikurtorfason/.vscode/extensions/vitest.explorer-1.20.3/dist/extension.js:17:4348)
at Fr.getOrCreateFolderTestItem (/Users/eirikurtorfason/.vscode/extensions/vitest.explorer-1.20.3/dist/extension.js:17:4348)
at Fr.getOrCreateFolderTestItem (/Users/eirikurtorfason/.vscode/extensions/vitest.explorer-1.20.3/dist/extension.js:17:4348)
at Fr.getOrCreateFolderTestItem (/Users/eirikurtorfason/.vscode/extensions/vitest.explorer-1.20.3/dist/extension.js:17:4348)
at Fr.getOrCreateFolderTestItem (/Users/eirikurtorfason/.vscode/extensions/vitest.explorer-1.20.3/dist/extension.js:17:4348)
at Fr.getOrCreateFolderTestItem (/Users/eirikurtorfason/.vscode/extensions/vitest.explorer-1.20.3/dist/extension.js:17:4348)
at Fr.getOrCreateFolderTestItem (/Users/eirikurtorfason/.vscode/extensions/vitest.explorer-1.20.3/dist/extension.js:17:4348)
at Fr.getOrCreateFolderTestItem (/Users/eirikurtorfason/.vscode/extensions/vitest.explorer-1.20.3/dist/extension.js:17:4348)
at Fr.getOrCreateFolderTestItem (/Users/eirikurtorfason/.vscode/extensions/vitest.explorer-1.20.3/dist/extension.js:17:4348)
at Fr.getOrCreateFolderTestItem (/Users/eirikurtorfason/.vscode/extensions/vitest.explorer-1.20.3/dist/extension.js:17:4348)
at Fr.getOrCreateFolderTestItem (/Users/eirikurtorfason/.vscode/extensions/vitest.explorer-1.20.3/dist/extension.js:17:4348)
at Fr.getOrCreateFolderTestItem (/Users/eirikurtorfason/.vscode/extensions/vitest.explorer-1.20.3/dist/extension.js:17:4348)
at Fr.getOrCreateFolderTestItem (/Users/eirikurtorfason/.vscode/extensions/vitest.explorer-1.20.3/dist/extension.js:17:4348)
at Fr.getOrCreateFolderTestItem (/Users/eirikurtorfason/.vscode/extensions/vitest.explorer-1.20.3/dist/extension.js:17:4348)
at Fr.getOrCreateFolderTestItem (/Users/eirikurtorfason/.vscode/extensions/vitest.explorer-1.20.3/dist/extension.js:17:4348)
at Fr.getOrCreateFolderTestItem (/Users/eirikurtorfason/.vscode/extensions/vitest.explorer-1.20.3/dist/extension.js:17:4348)
at Fr.getOrCreateFolderTestItem (/Users/eirikurtorfason/.vscode/extensions/vitest.explorer-1.20.3/dist/extension.js:17:4348)
at Fr.getOrCreateFolderTestItem (/Users/eirikurtorfason/.vscode/extensions/vitest.explorer-1.20.3/dist/extension.js:17:4348)
at Fr.getOrCreateFolderTestItem (/Users/eirikurtorfason/.vscode/extensions/vitest.explorer-1.20.3/dist/extension.js:17:4348)
at Fr.getOrCreateFolderTestItem (/Users/eirikurtorfason/.vscode/extensions/vitest.explorer-1.20.3/dist/extension.js:17:4348)
at Fr.getOrCreateFolderTestItem (/Users/eirikurtorfason/.vscode/extensions/vitest.explorer-1.20.3/dist/extension.js:17:4348)
at Fr.getOrCreateFolderTestItem (/Users/eirikurtorfason/.vscode/extensions/vitest.explorer-1.20.3/dist/extension.js:17:4348)
at Fr.getOrCreateFolderTestItem (/Users/eirikurtorfason/.vscode/extensions/vitest.explorer-1.20.3/dist/extension.js:17:4348)
at Fr.getOrCreateFolderTestItem (/Users/eirikurtorfason/.vscode/extensions/vitest.explorer-1.20.3/dist/extension.js:17:4348)
at Fr.getOrCreateFolderTestItem (/Users/eirikurtorfason/.vscode/extensions/vitest.explorer-1.20.3/dist/extension.js:17:4348)
at Fr.getOrCreateFolderTestItem (/Users/eirikurtorfason/.vscode/extensions/vitest.explorer-1.20.3/dist/extension.js:17:4348)
at Fr.getOrCreateFolderTestItem (/Users/eirikurtorfason/.vscode/extensions/vitest.explorer-1.20.3/dist/extension.js:17:4348)
at Fr.getOrCreateFolderTestItem (/Users/eirikurtorfason/.vscode/extensions/vitest.explorer-1.20.3/dist/extension.js:17:4348)
at Fr.getOrCreateFolderTestItem (/Users/eirikurtorfason/.vscode/extensions/vitest.explorer-1.20.3/dist/extension.js:17:4348)
at Fr.getOrCreateFolderTestItem (/Users/eirikurtorfason/.vscode/extensions/vitest.explorer-1.20.3/dist/extension.js:17:4348)
at Fr.getOrCreateFolderTestItem (/Users/eirikurtorfason/.vscode/extensions/vitest.explorer-1.20.3/dist/extension.js:17:4348)
at Fr.getOrCreateFolderTestItem (/Users/eirikurtorfason/.vscode/extensions/vitest.explorer-1.20.3/dist/extension.js:17:4348)
at Fr.getOrCreateFolderTestItem (/Users/eirikurtorfason/.vscode/extensions/vitest.explorer-1.20.3/dist/extension.js:17:4348)Extension Version
1.20.3
Vitest Version
3.2.3
Validations
- Check that you are using the latest version of the extension
- Check that there isn't already an issue that reports the same bug to avoid creating a duplicate.
- Check that this is a concrete bug. For Q&A open a GitHub Discussion or join our Discord Chat Server.
- The provided reproduction is a minimal reproducible example of the bug.