| FazBrowse GitHub Viewer | Trending | | Home |
| Tools: [Download Repo ZIP] [Original HTTPS Page] |
Sorry, something went wrong.
The test was added in f3e2e092 before `_StopError` was removed in 41f69f4, after which this test will not fail without the fix it covers. This PR fixes the test to resume its coverage.
|
This PR is stale because it has been open for 30 days with no activity. |
Sorry, something went wrong.
There was a problem hiding this comment.
Ran 2287 tests in 83.131s
OK (skipped=18) All windows tests
Also hit base_events.
Looks good.
Sorry, something went wrong.
✅ Deploy Preview for python-cpython-preview canceled.
|
Sorry, something went wrong.
| self.loop.run_forever() | ||
| except KeyboardInterrupt: | ||
| pass | ||
| self.loop.call_later(0.01, func) |
There was a problem hiding this comment.
A bit unfortunate that we had to add a 10 msec delay here -- in most cases that will waste 10 msec and occasionally it will not wait long enough and the test will flake-fail. Why won't call_soon work?
Sorry, something went wrong.
There was a problem hiding this comment.
Background: this test covers a bug that base exceptions like KeyboardInterrupt will cause the loop to be closed twice, leading to an early exit in the next loop run.
This test was added before _StopError was dropped, at that time the loop will stop as soon as _StopError is raised, even if the _ready queue still has a handle (which is the next run - the func() here), therefore this was a good test. But now the loop will exhaust the _ready queue before stopping, so this test couldn't cover the bug anymore without this PR. That's also why we cannot simply add func() into the _ready queue by call_soon().
You're right about the flakyness of using call_later() tho. Now I think a better fix would be to use chained call_soon() to skip the first iteration where the buggy stop occured:
| self.loop.call_later(0.01, func) | |
| # If the issue persists, the loop will exit early after the first iteration, | |
| # in that case our func() in the second iteration won't be called. | |
| self.loop.call_soon(self.loop.call_soon, func) |
I verified and this error fails if the fix in f3e2e09 is reverted.
Sorry, something went wrong.
There was a problem hiding this comment.
Clever solution, go ahead and make it a PR, assign to me or @kumaraditya303 for review.
Sorry, something went wrong.
| Back | FazBrowse Home | New Git URL |
The test was added in f3e2e092 before _StopError was removed in 41f69f4, after which this test will not fail without the fix it covers. This PR fixes the test to resume its coverage.
Refs: MagicStack/uvloop#337