-
Notifications
You must be signed in to change notification settings - Fork 135
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
Don't cache preview app entry point dependencies #321
Conversation
We have a longstanding gotcha where we tell folks to avoid instantiating their root model on their app entry point because any dependencies on the root model may negatively affect any preview in their application. This PR detects when a dependency is accessed in a SwiftUI preview app entry point and prevents it from influencing the cache using the call stack symbols available. While this isn't a silver bullet, and any async work kicked off from the app entry point could still affect things negatively, this should hopefully be mostly an improvement on the status quo and maybe we won't have to refer folks to this gotcha as often in the future.
We’ve encountered an issue with stateful This behavior appears to be related to caching introduced in PR #78, though I may be mistaken. Ideally, testValue should not be cached and should reset automatically for each test case, ensuring isolation even during parallel execution. Could we consider revisiting this behavior to ensure testValue is not shared across tests? This would align better with typical testing practices. Thank you. |
Adding to @niorko comment: To be more specific, it seems that issue is that Swift-Testing no longer resets cache. XCTest previously executed this block
This no longer applies to Swift-Testing.
Because some using this will work - but this is just a workaround.
Is there a possibility that Swift Testing @test methods could be isolated from each other (use own DependencyValues / cache) when being run in parallel? Of course as @niorko mentioned we can add |
We were using an older version that lacked support for Swift Testing. After updating, it appears to work correctly - apologies for the earlier comments. However, it seems to have some issues with repeated tests, which are likely demonstrated here 7d89478#diff-86f2ce713ec4eb2b2a5301f1b558597d3d362f26a1152c66fb117e2580402c2a. |
We have a longstanding gotcha where we tell folks to avoid instantiating their root model on their app entry point because any dependencies on the root model may negatively affect any preview in their application.
This PR detects when a dependency is accessed in a SwiftUI preview app entry point and prevents it from influencing the cache using the call stack symbols available. While this isn't a silver bullet, and any async work kicked off from the app entry point could still affect things negatively, this should hopefully be mostly an improvement on the status quo and maybe we won't have to refer folks to this gotcha as often in the future.