replace explicit sleep with polling in animation tests#1697
Merged
gaborbernat merged 5 commits intopypa:mainfrom Mar 18, 2026
Merged
replace explicit sleep with polling in animation tests#1697gaborbernat merged 5 commits intopypa:mainfrom
gaborbernat merged 5 commits intopypa:mainfrom
Conversation
efactor `check_animate_output` to use a polling loop instead of `time.sleep()`. This eliminates race conditions causing flaky failures on CI runners and speeds up local execution. - Removed rigid sleep calculations based on frame count. - Added `while` loop to capture stderr until expected length is reached. - Simplified `test_env_no_animate` sleep logic.
for more information, see https://pre-commit.ci
4279653 to
5cc32a6
Compare
gaborbernat
requested changes
Mar 17, 2026
tests/test_animate.py
Outdated
| # and to capture all its characters. | ||
| time.sleep(extra_after_thread_time) | ||
| # POLLING LOOP: Keep reading until we get the expected data | ||
| while time.time() - start_time < timeout: |
Contributor
There was a problem hiding this comment.
You need to use default_timer, otherwise DST will kill you.
Contributor
Author
There was a problem hiding this comment.
@gaborbernat Good call. Fixed in the latest commit using default_timer(). Thanks!
gaborbernat
approved these changes
Mar 18, 2026
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.
Fixes #1696
Refactor
check_animate_outputto use a polling loop instead oftime.sleep(). This eliminates race conditions causing flaky failures on CI runners and speeds up local execution.Removed rigid sleep calculations based on frame count.
Added
whileloop to capture stderr until expected length is reached.Simplified
test_env_no_animatesleep logic.I have added a news fragment under
changelog.d/(if the patch affects the end users)Summary of changes
Replaced the unstable
time.sleep()synchronization incheck_animate_output(insidetests/test_animate.py) with a polling loop.Instead of waiting a fixed duration (which causes flakes on slow CI runners), the test now waits for the exact number of characters to appear in
stderr. This makes the test deterministic and significantly faster on local machines.Test plan
Tested by running the animation tests locally: