fix: stale mock metadata breaks automocking with isolate:false#1
Draft
kade-robertson wants to merge 1 commit into
Draft
fix: stale mock metadata breaks automocking with isolate:false#1kade-robertson wants to merge 1 commit into
kade-robertson wants to merge 1 commit into
Conversation
When fetchModule returns early for a manual/redirect mock, it bakes `mockedModule` (with code: '') into the module node's meta. With isolate:false this metadata persists across test files. If a later file registers an automock for the same module, cachedRequest was using the stale manual mock from meta instead of the current automock from the registry, and requestWithMockedModule could not evaluate the module because the meta carried empty code. Re-read the current mock from the registry and compare it against the one stored in meta. When they differ, re-fetch the actual module via _vitest_original so requestWithMockedModule receives a node with real code to automock against. Regression introduced in a8216b0 (vitest-dev#9774).
6 tasks
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
When fetchModule returns early for a manual/redirect mock, it bakes
mockedModule(with code: '') into the module node's meta. With isolate:false this metadata persists across test files. If a later file registers an automock for the same module, cachedRequest was using the stale manual mock from meta instead of the current automock from the registry, and requestWithMockedModule could not evaluate the module because the meta carried empty code.Re-read the current mock from the registry and compare it against the one stored in meta. When they differ, re-fetch the actual module via _vitest_original so requestWithMockedModule receives a node with real code to automock against.
Regression introduced in a8216b0 (vitest-dev#9774).