test: wait for the event in tests that raced the main actor or a timer - #3253
Merged
Merged
Conversation
SSHTunnelErrorTests.cancellationDismissesPrompt waited for a main-actor job with 20 Task.yield() calls off the main actor, which never wait for the main thread. It fails the Unit tests job on main. It now waits for the dismissal itself, bounded by BoundedCall. Two sidebar filter tests slept 300 ms against the 150 ms debounce. They now wait for the value the debounce publishes.
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.
Why
The Unit tests job on
mainfails onSSHTunnelErrorTests.cancellationDismissesPrompt, on the push for #3251 and again on its re-run. The prompt dismissal is a main-actor job. The test ran off the main actor and waited with 20Task.yield()calls, which never wait for the main thread, so the assertion could run first.Change
BoundedCall, so it neither fails early nor hangs.Verified
A probe of the old SSH wait reads
falsein 20 of 20 runs; the event wait is right in 20 of 20 and returns at its bound when the event never comes.SSHTunnelErrorTestsandSidebarViewModelSearchDebounceTestspass locally.Not in this PR
Task.yield()sites inTableProTestswere audited: each waits on the main actor for a job already queued there, which holds.