Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

fix(vitest): don't hang when mocking files with cyclic dependencies #4811

Merged
merged 4 commits into from
Dec 28, 2023

Conversation

sheremet-va
Copy link
Member

@sheremet-va sheremet-va commented Dec 27, 2023

Description

Fixes #4373

The problem was that the call stack didn't contain the file that triggered the mock factory execution - in this case importActual should behave the same way as a dynamic import.

Please don't delete this checklist! Before submitting the PR, please make sure you do the following:

  • It's really useful if your PR references an issue where it is discussed ahead of time. If the feature is substantial or introduces breaking changes without a discussion, PR might be closed.
  • Ideally, include a test that fails without this PR but passes with it.
  • Please, don't make changes to pnpm-lock.yaml unless you introduce a new test example.

Tests

  • Run the tests with pnpm test:ci.

Documentation

  • If you introduce new functionality, document it. You can run documentation with pnpm run docs command.

Changesets

  • Changes in changelog are generated from PR name. Please, make sure that it explains your changes in an understandable manner. Please, prefix changeset messages with feat:, fix:, perf:, docs:, or chore:.

Copy link

netlify bot commented Dec 27, 2023

Deploy Preview for fastidious-cascaron-4ded94 canceled.

Name Link
🔨 Latest commit 48a58d3
🔍 Latest deploy log https://app.netlify.com/sites/fastidious-cascaron-4ded94/deploys/658c64cb5cc7630008373b61

Copy link
Member

@AriPerkkio AriPerkkio left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Looks good. I did some manual testing locally and this fixes all the cases I had.

Thank you!

@AriPerkkio
Copy link
Member

AriPerkkio commented Dec 27, 2023

Any ideas why birpc doesn't timeout in these cases? The module is requested via rpc and resolved on main thread - right?

@sheremet-va
Copy link
Member Author

sheremet-va commented Dec 27, 2023

Any ideas why birpc doesn't timeout in these cases? The module is requested via rpc and resolved on main thread - right?

RPC returned the information correctly. In this particular case we need to import ./module-1 the second time and since it is cached, we return the same .promise, so it just never resolves. We need to return exports in this case to not go into infinite waiting. We already do this for regular imports, but importActual worked a bit differently.

@sheremet-va sheremet-va merged commit e8ca643 into vitest-dev:main Dec 28, 2023
18 of 19 checks passed
@sheremet-va sheremet-va deleted the fix/cyclic-import-original branch December 28, 2023 09:44
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

vi.mock's importOriginal stuck on circular imports
2 participants