Skip to content
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

test_startup_failure fails with trio 0.25.0 #217

Closed
mweinelt opened this issue Apr 20, 2024 · 3 comments
Closed

test_startup_failure fails with trio 0.25.0 #217

mweinelt opened this issue Apr 20, 2024 · 3 comments

Comments

@mweinelt
Copy link

After upgrading trio to 0.25.0 we are seeing the following test failure:

hypercorn> _____________________________ test_startup_failure _____________________________
hypercorn>   + Exception Group Traceback (most recent call last):
hypercorn>   |   File "/nix/store/v151j4g2cz8pkgd78bizjw58jwjavky0-python3.12-pytest-8.1.1/lib/python3.12/site-packages/_pytest/runner.py", line 340, in from_call
hypercorn>   |     result: Optional[TResult] = func()
hypercorn>   |                                 ^^^^^^
hypercorn>   |   File "/nix/store/v151j4g2cz8pkgd78bizjw58jwjavky0-python3.12-pytest-8.1.1/lib/python3.12/site-packages/_pytest/runner.py", line 240, in <lambda>
hypercorn>   |     lambda: runtest_hook(item=item, **kwds), when=when, reraise=reraise
hypercorn>   |             ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
hypercorn>   |   File "/nix/store/28vfwnihxhgy50f9z39nlzhi47az5cz4-python3.12-pluggy-1.4.0/lib/python3.12/site-packages/pluggy/_hooks.py", line 501, in __call__
hypercorn>   |     return self._hookexec(self.name, self._hookimpls.copy(), kwargs, firstresult)
hypercorn>   |            ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
hypercorn>   |   File "/nix/store/28vfwnihxhgy50f9z39nlzhi47az5cz4-python3.12-pluggy-1.4.0/lib/python3.12/site-packages/pluggy/_manager.py", line 119, in _hookexec
hypercorn>   |     return self._inner_hookexec(hook_name, methods, kwargs, firstresult)
hypercorn>   |            ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
hypercorn>   |   File "/nix/store/28vfwnihxhgy50f9z39nlzhi47az5cz4-python3.12-pluggy-1.4.0/lib/python3.12/site-packages/pluggy/_callers.py", line 181, in _multicall
hypercorn>   |     return outcome.get_result()
hypercorn>   |            ^^^^^^^^^^^^^^^^^^^^
hypercorn>   |   File "/nix/store/28vfwnihxhgy50f9z39nlzhi47az5cz4-python3.12-pluggy-1.4.0/lib/python3.12/site-packages/pluggy/_result.py", line 99, in get_result
hypercorn>   |     raise exc.with_traceback(exc.__traceback__)
hypercorn>   |   File "/nix/store/28vfwnihxhgy50f9z39nlzhi47az5cz4-python3.12-pluggy-1.4.0/lib/python3.12/site-packages/pluggy/_callers.py", line 166, in _multicall
hypercorn>   |     teardown.throw(outcome._exception)
hypercorn>   |   File "/nix/store/v151j4g2cz8pkgd78bizjw58jwjavky0-python3.12-pytest-8.1.1/lib/python3.12/site-packages/_pytest/threadexception.py", line 87, in pytest_runtest_call
hypercorn>   |     yield from thread_exception_runtest_hook()
hypercorn>   |   File "/nix/store/v151j4g2cz8pkgd78bizjw58jwjavky0-python3.12-pytest-8.1.1/lib/python3.12/site-packages/_pytest/threadexception.py", line 63, in thread_exception_runtest_hook
hypercorn>   |     yield
hypercorn>   |   File "/nix/store/28vfwnihxhgy50f9z39nlzhi47az5cz4-python3.12-pluggy-1.4.0/lib/python3.12/site-packages/pluggy/_callers.py", line 166, in _multicall
hypercorn>   |     teardown.throw(outcome._exception)
hypercorn>   |   File "/nix/store/v151j4g2cz8pkgd78bizjw58jwjavky0-python3.12-pytest-8.1.1/lib/python3.12/site-packages/_pytest/unraisableexception.py", line 90, in pytest_runtest_call
hypercorn>   |     yield from unraisable_exception_runtest_hook()
hypercorn>   |   File "/nix/store/v151j4g2cz8pkgd78bizjw58jwjavky0-python3.12-pytest-8.1.1/lib/python3.12/site-packages/_pytest/unraisableexception.py", line 65, in unraisable_exception_runtest_hook
hypercorn>   |     yield
hypercorn>   |   File "/nix/store/28vfwnihxhgy50f9z39nlzhi47az5cz4-python3.12-pluggy-1.4.0/lib/python3.12/site-packages/pluggy/_callers.py", line 166, in _multicall
hypercorn>   |     teardown.throw(outcome._exception)
hypercorn>   |   File "/nix/store/v151j4g2cz8pkgd78bizjw58jwjavky0-python3.12-pytest-8.1.1/lib/python3.12/site-packages/_pytest/logging.py", line 849, in pytest_runtest_call
hypercorn>   |     yield from self._runtest_for(item, "call")
hypercorn>   |   File "/nix/store/v151j4g2cz8pkgd78bizjw58jwjavky0-python3.12-pytest-8.1.1/lib/python3.12/site-packages/_pytest/logging.py", line 832, in _runtest_for
hypercorn>   |     yield
hypercorn>   |   File "/nix/store/28vfwnihxhgy50f9z39nlzhi47az5cz4-python3.12-pluggy-1.4.0/lib/python3.12/site-packages/pluggy/_callers.py", line 166, in _multicall
hypercorn>   |     teardown.throw(outcome._exception)
hypercorn>   |   File "/nix/store/v151j4g2cz8pkgd78bizjw58jwjavky0-python3.12-pytest-8.1.1/lib/python3.12/site-packages/_pytest/capture.py", line 883, in pytest_runtest_call
hypercorn>   |     return (yield)
hypercorn>   |             ^^^^^
hypercorn>   |   File "/nix/store/28vfwnihxhgy50f9z39nlzhi47az5cz4-python3.12-pluggy-1.4.0/lib/python3.12/site-packages/pluggy/_callers.py", line 166, in _multicall
hypercorn>   |     teardown.throw(outcome._exception)
hypercorn>   |   File "/nix/store/v151j4g2cz8pkgd78bizjw58jwjavky0-python3.12-pytest-8.1.1/lib/python3.12/site-packages/_pytest/skipping.py", line 256, in pytest_runtest_call
hypercorn>   |     return (yield)
hypercorn>   |             ^^^^^
hypercorn>   |   File "/nix/store/28vfwnihxhgy50f9z39nlzhi47az5cz4-python3.12-pluggy-1.4.0/lib/python3.12/site-packages/pluggy/_callers.py", line 102, in _multicall
hypercorn>   |     res = hook_impl.function(*args)
hypercorn>   |           ^^^^^^^^^^^^^^^^^^^^^^^^^
hypercorn>   |   File "/nix/store/v151j4g2cz8pkgd78bizjw58jwjavky0-python3.12-pytest-8.1.1/lib/python3.12/site-packages/_pytest/runner.py", line 182, in pytest_runtest_call
hypercorn>   |     raise e
hypercorn>   |   File "/nix/store/v151j4g2cz8pkgd78bizjw58jwjavky0-python3.12-pytest-8.1.1/lib/python3.12/site-packages/_pytest/runner.py", line 172, in pytest_runtest_call
hypercorn>   |     item.runtest()
hypercorn>   |   File "/nix/store/v151j4g2cz8pkgd78bizjw58jwjavky0-python3.12-pytest-8.1.1/lib/python3.12/site-packages/_pytest/python.py", line 1772, in runtest
hypercorn>   |     self.ihook.pytest_pyfunc_call(pyfuncitem=self)
hypercorn>   |   File "/nix/store/28vfwnihxhgy50f9z39nlzhi47az5cz4-python3.12-pluggy-1.4.0/lib/python3.12/site-packages/pluggy/_hooks.py", line 501, in __call__
hypercorn>   |     return self._hookexec(self.name, self._hookimpls.copy(), kwargs, firstresult)
hypercorn>   |            ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
hypercorn>   |   File "/nix/store/28vfwnihxhgy50f9z39nlzhi47az5cz4-python3.12-pluggy-1.4.0/lib/python3.12/site-packages/pluggy/_manager.py", line 119, in _hookexec
hypercorn>   |     return self._inner_hookexec(hook_name, methods, kwargs, firstresult)
hypercorn>   |            ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
hypercorn>   |   File "/nix/store/28vfwnihxhgy50f9z39nlzhi47az5cz4-python3.12-pluggy-1.4.0/lib/python3.12/site-packages/pluggy/_callers.py", line 181, in _multicall
hypercorn>   |     return outcome.get_result()
hypercorn>   |            ^^^^^^^^^^^^^^^^^^^^
hypercorn>   |   File "/nix/store/28vfwnihxhgy50f9z39nlzhi47az5cz4-python3.12-pluggy-1.4.0/lib/python3.12/site-packages/pluggy/_result.py", line 99, in get_result
hypercorn>   |     raise exc.with_traceback(exc.__traceback__)
hypercorn>   |   File "/nix/store/28vfwnihxhgy50f9z39nlzhi47az5cz4-python3.12-pluggy-1.4.0/lib/python3.12/site-packages/pluggy/_callers.py", line 102, in _multicall
hypercorn>   |     res = hook_impl.function(*args)
hypercorn>   |           ^^^^^^^^^^^^^^^^^^^^^^^^^
hypercorn>   |   File "/nix/store/v151j4g2cz8pkgd78bizjw58jwjavky0-python3.12-pytest-8.1.1/lib/python3.12/site-packages/_pytest/python.py", line 195, in pytest_pyfunc_call
hypercorn>   |     result = testfunction(**testargs)
hypercorn>   |              ^^^^^^^^^^^^^^^^^^^^^^^^
hypercorn>   |   File "/nix/store/dvv2iy025xm9x7422pwwc3rd0d2w23hq-python3.12-pytest-trio-0.8.0/lib/python3.12/site-packages/pytest_trio/plugin.py", line 348, in wrapper
hypercorn>   |     return run(partial(fn, **kwargs), clock=clock, instruments=instruments)
hypercorn>   |            ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
hypercorn>   |   File "/nix/store/jxlwjjdg45x361ixay8vzgclgi9dd249-python3.12-trio-0.25.0/lib/python3.12/site-packages/trio/_core/_run.py", line 2288, in run
hypercorn>   |     raise runner.main_task_outcome.error
hypercorn>   |   File "/nix/store/dvv2iy025xm9x7422pwwc3rd0d2w23hq-python3.12-pytest-trio-0.8.0/lib/python3.12/site-packages/pytest_trio/plugin.py", line 426, in _bootstrap_fixtures_and_run_test
hypercorn>   |     raise test_ctx.error_list[0]
hypercorn>   |   File "/nix/store/dvv2iy025xm9x7422pwwc3rd0d2w23hq-python3.12-pytest-trio-0.8.0/lib/python3.12/site-packages/pytest_trio/plugin.py", line 193, in _fixture_manager
hypercorn>   |     async with trio.open_nursery() as nursery_fixture:
hypercorn>   |   File "/nix/store/jxlwjjdg45x361ixay8vzgclgi9dd249-python3.12-trio-0.25.0/lib/python3.12/site-packages/trio/_core/_run.py", line 954, in __aexit__
hypercorn>   |     raise combined_error_from_nursery
hypercorn>   | ExceptionGroup: Exceptions from Trio nursery (1 sub-exception)
hypercorn>   +-+---------------- 1 ----------------
hypercorn>     | Exception Group Traceback (most recent call last):
hypercorn>     |   File "/nix/store/dvv2iy025xm9x7422pwwc3rd0d2w23hq-python3.12-pytest-trio-0.8.0/lib/python3.12/site-packages/pytest_trio/plugin.py", line 195, in _fixture_manager
hypercorn>     |     yield nursery_fixture
hypercorn>     |   File "/nix/store/dvv2iy025xm9x7422pwwc3rd0d2w23hq-python3.12-pytest-trio-0.8.0/lib/python3.12/site-packages/pytest_trio/plugin.py", line 250, in run
hypercorn>     |     await self._func(**resolved_kwargs)
hypercorn>     |   File "/build/source/tests/trio/test_lifespan.py", line 28, in test_startup_failure
hypercorn>     |     async with trio.open_nursery() as lifespan_nursery:
hypercorn>     |   File "/nix/store/jxlwjjdg45x361ixay8vzgclgi9dd249-python3.12-trio-0.25.0/lib/python3.12/site-packages/trio/_core/_run.py", line 954, in __aexit__
hypercorn>     |     raise combined_error_from_nursery
hypercorn>     | ExceptionGroup: Exceptions from Trio nursery (1 sub-exception)
hypercorn>     +-+---------------- 1 ----------------
hypercorn>       | Traceback (most recent call last):
hypercorn>       |   File "/nix/store/h8i8qr6jx7cy2pmsw784fq5zd4s8z9rk-python3.12-hypercorn-0.16.0/lib/python3.12/site-packages/hypercorn/trio/lifespan.py", line 34, in handle_lifespan
hypercorn>       |     await self.app(
hypercorn>       |   File "/nix/store/h8i8qr6jx7cy2pmsw784fq5zd4s8z9rk-python3.12-hypercorn-0.16.0/lib/python3.12/site-packages/hypercorn/app_wrappers.py", line 34, in __call__
hypercorn>       |     await self.app(scope, receive, send)
hypercorn>       |   File "/build/source/tests/helpers.py", line 80, in lifespan_failure
hypercorn>       |     await send({"type": "lifespan.startup.failed", "message": "Failure"})
hypercorn>       |   File "/nix/store/h8i8qr6jx7cy2pmsw784fq5zd4s8z9rk-python3.12-hypercorn-0.16.0/lib/python3.12/site-packages/hypercorn/trio/lifespan.py", line 93, in asgi_send
hypercorn>       |     raise LifespanFailureError("startup", message.get("message", ""))
hypercorn>       | hypercorn.utils.LifespanFailureError: Lifespan failure in startup. 'Failure'
hypercorn>       +------------------------------------
@pgjones
Copy link
Owner

pgjones commented May 26, 2024

The current main tests succeed with trio 0.25.1 - so I'm not sure what this was. Please reopen if it is still an issue.

@pgjones pgjones closed this as completed May 26, 2024
@musicinmybrain
Copy link
Contributor

I just bisected this (with tox -e py312 between 0.16.0 and main) and found that c37a9ab is the first commit for which tests pass.

Then I tried cherry-picking that commit back to 0.16.0 (which was a bit harder than necessary since it mixed functional changes with reformatting), but it wasn’t a fix by itself.

Are you by chance planning a release any time soon?

@musicinmybrain
Copy link
Contributor

Ah, I bisected on test_startup_failure specifically, and found 9400eb9, which does seem to be the fix for this particular issue. Cherry-picking both commits to 0.16.0 does seem to produce a patch that gets the tests working on the released hypercorn. Based on the contents of the two commits, this was purely a testing bug rather than a bug in hypercorn itself.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

3 participants