Open
Description
Without the zkapauthorizer fixture in conftest.py, 16/17 tests pass with one error:
jeff@konitz ~/private_facts ✹gridsync_integration % uvr pytest private_facts -k integration
==================================================================================== test session starts =====================================================================================
platform linux -- Python 3.12.9, pytest-8.3.4, pluggy-1.5.0
rootdir: /home/jeff/private_facts/private_facts
configfile: pytest.ini
plugins: twisted-1.14.3, anyio-4.8.0
collected 52 items / 35 deselected / 17 selected
private_facts/test/tahoe_integration_test.py ....E............ [100%]
=========================================================================================== ERRORS ===========================================================================================
_______________________________________________________________________ ERROR at setup of test_no_html_in_server_error _______________________________________________________________________
file /home/jeff/private_facts/private_facts/test/tahoe_integration_test.py, line 64
@ensureDeferred
async def test_no_html_in_server_error(zkapauthorizer):
try:
# Attempting to create a directory using a `Tahoe` client that
# is configured to use ZKAPAuthorizer against a `Tahoe` server
# that is *not* configured to use ZKAPAuthorizer will fail with
# a status code of 500 (possibly due to the mismatch in plugin
# configurations between the client and the server -- or
# possibly because the `Tahoe` client has no tokens yet?).
# XXX: Maybe there's a better way to trigger a 500 error here?
await zkapauthorizer.gateway.mkdir()
except TahoeWebError as e:
assert "status code 500:" in str(e) and "<!DOCTYPE html>" not in str(e)
E fixture 'zkapauthorizer' not found
> available fixtures: anyio_backend, anyio_backend_name, anyio_backend_options, cache, capfd, capfdbinary, caplog, capsys, capsysbinary, doctest_namespace, fake_tahoe, monkeypatch, pytestconfig, reactor, record_property, record_testsuite_property, record_xml_attribute, recwarn, tahoe, tahoe_client, tahoe_factory, tahoe_server, tmp_path, tmp_path_factory, tmpdir, tmpdir_factory, twisted_greenlet
> use 'pytest --fixtures [testpath]' for help on them.
/home/jeff/private_facts/private_facts/test/tahoe_integration_test.py:64
================================================================================== short test summary info ===================================================================================
ERROR private_facts/test/tahoe_integration_test.py::test_no_html_in_server_error
========================================================================= 16 passed, 35 deselected, 1 error in 4.82s =========================================================================
If the zkap authorizer is added, only 4/17 tests pass:
jeff@konitz ~/private_facts1 ↵ ✹gridsync_integration % uvr pytest private_facts -k integration
==================================================================================== test session starts =====================================================================================
platform linux -- Python 3.12.9, pytest-8.3.4, pluggy-1.5.0
rootdir: /home/jeff/private_facts/private_facts
configfile: pytest.ini
plugins: twisted-1.14.3, anyio-4.8.0
collected 52 items / 35 deselected / 17 selected
private_facts/test/tahoe_integration_test.py ....FFFFFFFFFFFFFE [100%]
=========================================================================================== ERRORS ===========================================================================================
____________________________________________________________________ ERROR at teardown of test_apply_connection_settings _____________________________________________________________________
+ Exception Group Traceback (most recent call last):
| File "/home/jeff/private_facts/.venv/lib/python3.12/site-packages/_pytest/runner.py", line 341, in from_call
| result: TResult | None = func()
| ^^^^^^
| File "/home/jeff/private_facts/.venv/lib/python3.12/site-packages/_pytest/runner.py", line 242, in <lambda>
| lambda: runtest_hook(item=item, **kwds), when=when, reraise=reraise
| ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
| File "/home/jeff/private_facts/.venv/lib/python3.12/site-packages/pluggy/_hooks.py", line 513, in __call__
| return self._hookexec(self.name, self._hookimpls.copy(), kwargs, firstresult)
| ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
| File "/home/jeff/private_facts/.venv/lib/python3.12/site-packages/pluggy/_manager.py", line 120, in _hookexec
| return self._inner_hookexec(hook_name, methods, kwargs, firstresult)
| ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
| File "/home/jeff/private_facts/.venv/lib/python3.12/site-packages/pluggy/_callers.py", line 139, in _multicall
| raise exception.with_traceback(exception.__traceback__)
| File "/home/jeff/private_facts/.venv/lib/python3.12/site-packages/pluggy/_callers.py", line 122, in _multicall
| teardown.throw(exception) # type: ignore[union-attr]
| ^^^^^^^^^^^^^^^^^^^^^^^^^
| File "/home/jeff/private_facts/.venv/lib/python3.12/site-packages/_pytest/threadexception.py", line 97, in pytest_runtest_teardown
| yield from thread_exception_runtest_hook()
| File "/home/jeff/private_facts/.venv/lib/python3.12/site-packages/_pytest/threadexception.py", line 68, in thread_exception_runtest_hook
| yield
| File "/home/jeff/private_facts/.venv/lib/python3.12/site-packages/pluggy/_callers.py", line 122, in _multicall
| teardown.throw(exception) # type: ignore[union-attr]
| ^^^^^^^^^^^^^^^^^^^^^^^^^
| File "/home/jeff/private_facts/.venv/lib/python3.12/site-packages/_pytest/unraisableexception.py", line 100, in pytest_runtest_teardown
| yield from unraisable_exception_runtest_hook()
| File "/home/jeff/private_facts/.venv/lib/python3.12/site-packages/_pytest/unraisableexception.py", line 70, in unraisable_exception_runtest_hook
| yield
| File "/home/jeff/private_facts/.venv/lib/python3.12/site-packages/pluggy/_callers.py", line 122, in _multicall
| teardown.throw(exception) # type: ignore[union-attr]
| ^^^^^^^^^^^^^^^^^^^^^^^^^
| File "/home/jeff/private_facts/.venv/lib/python3.12/site-packages/_pytest/logging.py", line 853, in pytest_runtest_teardown
| yield from self._runtest_for(item, "teardown")
| File "/home/jeff/private_facts/.venv/lib/python3.12/site-packages/_pytest/logging.py", line 829, in _runtest_for
| yield
| File "/home/jeff/private_facts/.venv/lib/python3.12/site-packages/pluggy/_callers.py", line 122, in _multicall
| teardown.throw(exception) # type: ignore[union-attr]
| ^^^^^^^^^^^^^^^^^^^^^^^^^
| File "/home/jeff/private_facts/.venv/lib/python3.12/site-packages/_pytest/capture.py", line 885, in pytest_runtest_teardown
| return (yield)
| ^^^^^
| File "/home/jeff/private_facts/.venv/lib/python3.12/site-packages/pluggy/_callers.py", line 103, in _multicall
| res = hook_impl.function(*args)
| ^^^^^^^^^^^^^^^^^^^^^^^^^
| File "/home/jeff/private_facts/.venv/lib/python3.12/site-packages/_pytest/runner.py", line 189, in pytest_runtest_teardown
| item.session._setupstate.teardown_exact(nextitem)
| File "/home/jeff/private_facts/.venv/lib/python3.12/site-packages/_pytest/runner.py", line 557, in teardown_exact
| raise exceptions[0]
| ExceptionGroup: errors while tearing down <Module tahoe_integration_test.py> (3 sub-exceptions)
+-+---------------- 1 ----------------
| Traceback (most recent call last):
| File "/home/jeff/private_facts/.venv/lib/python3.12/site-packages/_pytest/runner.py", line 546, in teardown_exact
| fin()
| File "/home/jeff/private_facts/.venv/lib/python3.12/site-packages/_pytest/fixtures.py", line 1032, in finish
| raise exceptions[0]
| File "/home/jeff/private_facts/.venv/lib/python3.12/site-packages/_pytest/fixtures.py", line 1021, in finish
| fin()
| File "/home/jeff/private_facts/.venv/lib/python3.12/site-packages/pytest_twisted/__init__.py", line 311, in finalizer
| _run_inline_callbacks(
| File "/home/jeff/private_facts/.venv/lib/python3.12/site-packages/pytest_twisted/__init__.py", line 337, in _run_inline_callbacks
| raise RuntimeError("twisted reactor has stopped")
| RuntimeError: twisted reactor has stopped
+---------------- 2 ----------------
| Traceback (most recent call last):
| File "/home/jeff/private_facts/.venv/lib/python3.12/site-packages/_pytest/runner.py", line 546, in teardown_exact
| fin()
| File "/home/jeff/private_facts/.venv/lib/python3.12/site-packages/_pytest/fixtures.py", line 1032, in finish
| raise exceptions[0]
| File "/home/jeff/private_facts/.venv/lib/python3.12/site-packages/_pytest/fixtures.py", line 1021, in finish
| fin()
| File "/home/jeff/private_facts/.venv/lib/python3.12/site-packages/pytest_twisted/__init__.py", line 311, in finalizer
| _run_inline_callbacks(
| File "/home/jeff/private_facts/.venv/lib/python3.12/site-packages/pytest_twisted/__init__.py", line 337, in _run_inline_callbacks
| raise RuntimeError("twisted reactor has stopped")
| RuntimeError: twisted reactor has stopped
+---------------- 3 ----------------
| Traceback (most recent call last):
| File "/home/jeff/private_facts/.venv/lib/python3.12/site-packages/_pytest/runner.py", line 546, in teardown_exact
| fin()
| File "/home/jeff/private_facts/.venv/lib/python3.12/site-packages/_pytest/fixtures.py", line 1032, in finish
| raise exceptions[0]
| File "/home/jeff/private_facts/.venv/lib/python3.12/site-packages/_pytest/fixtures.py", line 1021, in finish
| fin()
| File "/home/jeff/private_facts/.venv/lib/python3.12/site-packages/pytest_twisted/__init__.py", line 311, in finalizer
| _run_inline_callbacks(
| File "/home/jeff/private_facts/.venv/lib/python3.12/site-packages/pytest_twisted/__init__.py", line 337, in _run_inline_callbacks
| raise RuntimeError("twisted reactor has stopped")
| RuntimeError: twisted reactor has stopped
+------------------------------------
----------------------------------------------------------------------------------- Captured log teardown ------------------------------------------------------------------------------------
WARNING root:watchdog_.py:55 Tried to stop Watchdog that wasn't started.
WARNING root:supervisor.py:79 Tried to stop a supervised process that wasn't running
WARNING root:watchdog_.py:55 Tried to stop Watchdog that wasn't started.
WARNING root:supervisor.py:79 Tried to stop a supervised process that wasn't running
========================================================================================== FAILURES ==========================================================================================
________________________________________________________________________________ test_no_html_in_server_error ________________________________________________________________________________
pyfuncitem = <Function test_no_html_in_server_error>
Unhandled error in Deferred:
Traceback (most recent call last):
File "/home/jeff/private_facts/.venv/lib/python3.12/site-packages/twisted/internet/defer.py", line 2017, in _inlineCallbacks
result = context.run(gen.send, result)
File "/home/jeff/private_facts/private_facts/test/conftest.py", line 92, in zkapauthorizer
await client.stop()
File "/home/jeff/private_facts/private_facts/src/gridsync/tahoe.py", line 479, in stop
await self.supervisor.stop()
File "/home/jeff/private_facts/.venv/lib/python3.12/site-packages/twisted/internet/defer.py", line 1191, in __iter__
result.raiseException()
File "/home/jeff/private_facts/.venv/lib/python3.12/site-packages/twisted/python/failure.py", line 455, in raiseException
raise self.value.with_traceback(self.tb)
File "/home/jeff/private_facts/.venv/lib/python3.12/site-packages/twisted/internet/defer.py", line 2013, in _inlineCallbacks
result = context.run(
File "/home/jeff/private_facts/.venv/lib/python3.12/site-packages/twisted/python/failure.py", line 467, in throwExceptionIntoGenerator
return g.throw(self.value.with_traceback(self.tb))
File "/home/jeff/private_facts/private_facts/src/gridsync/supervisor.py", line 84, in stop
yield terminate(self._protocol, kill_after=5)
File "/home/jeff/private_facts/.venv/lib/python3.12/site-packages/twisted/internet/defer.py", line 2017, in _inlineCallbacks
result = context.run(gen.send, result)
File "/home/jeff/private_facts/private_facts/src/gridsync/system.py", line 93, in terminate
proc.transport.signalProcess("TERM") # type:ignore
File "/home/jeff/private_facts/.venv/lib/python3.12/site-packages/twisted/internet/process.py", line 343, in signalProcess
raise ProcessExitedAlready()
twisted.internet.error.ProcessExitedAlready:
def pytest_pyfunc_call(pyfuncitem):
"""Interface to async test call handler."""
# TODO: only handle 'our' tests? what is the point of handling others?
# well, because our interface allowed people to return deferreds
# from arbitrary tests so we kinda have to keep this up for now
maybe_hypothesis = getattr(pyfuncitem.obj, "hypothesis", None)
if maybe_hypothesis is None:
> _run_inline_callbacks(
_async_pytest_pyfunc_call,
pyfuncitem,
pyfuncitem.obj,
{}
)
.venv/lib/python3.12/site-packages/pytest_twisted/__init__.py:358:
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
.venv/lib/python3.12/site-packages/pytest_twisted/__init__.py:344: in _run_inline_callbacks
blockon_default(d)
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
d = <Deferred at 0x7b467d3bfb00 waiting on Deferred at 0x7b467d5bdc70>
def blockon_default(d):
current = greenlet.getcurrent()
assert (
current is not _instances.gr_twisted
), "blockon cannot be called from the twisted greenlet"
result = []
def cb(r):
result.append(r)
if greenlet.getcurrent() is not current:
current.switch(result)
d.addCallbacks(cb, cb)
if not result:
_result = _instances.gr_twisted.switch()
> assert _result is result, "illegal switch in blockon"
E AssertionError: illegal switch in blockon
E assert None is []
.venv/lib/python3.12/site-packages/pytest_twisted/__init__.py:104: AssertionError
------------------------------------------------------------------------------------- Captured log setup -------------------------------------------------------------------------------------
CRITICAL root:msg.py:63 Error starting Tahoe-LAFS gateway for nodedir: A critical error occurred when attempting to start the Tahoe-LAFS gateway for "nodedir". Gridsync will now exit.
Click "Show Details..." for more information. 'tahoe run' in '/tmp/pytest-of-jeff/pytest-11/tahoe_client1/nodedir'
running node in '/tmp/pytest-of-jeff/pytest-11/tahoe_client1/nodedir'
2025-05-24T00:33:05-0400 [twisted.scripts._twistd_unix.UnixAppLogger#info] twistd 24.11.0 (/home/jeff/private_facts/.venv/bin/python 3.12.9) starting up.
2025-05-24T00:33:05-0400 [twisted.scripts._twistd_unix.UnixAppLogger#info] reactor class: twisted.internet.epollreactor.EPollReactor.
Missing Plugin
The configuration requests a plugin:
privatestorageio-zkapauthz-v2
...which cannot be found.
This typically means that some software hasn't been installed or the plugin couldn't be instantiated.
2025-05-24T00:33:05-0400 [twisted.internet.base#info] Main loop terminated.
2025-05-24T00:33:05-0400 [twisted.scripts._twistd_unix.UnixAppLogger#info] Server Shut Down.
___________________________________________________________________________________ test_upload_to_dircap ____________________________________________________________________________________
pyfuncitem = <Function test_upload_to_dircap>
def pytest_pyfunc_call(pyfuncitem):
"""Interface to async test call handler."""
# TODO: only handle 'our' tests? what is the point of handling others?
# well, because our interface allowed people to return deferreds
# from arbitrary tests so we kinda have to keep this up for now
maybe_hypothesis = getattr(pyfuncitem.obj, "hypothesis", None)
if maybe_hypothesis is None:
> _run_inline_callbacks(
_async_pytest_pyfunc_call,
pyfuncitem,
pyfuncitem.obj,
{}
)
.venv/lib/python3.12/site-packages/pytest_twisted/__init__.py:358:
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
f = <function _async_pytest_pyfunc_call at 0x7b4684b29080>, args = (<Function test_upload_to_dircap>, <function test_upload_to_dircap at 0x7b467d6314e0>, {})
def _run_inline_callbacks(f, *args):
"""Interface into Twisted greenlet to run and wait for a deferred."""
if _instances.gr_twisted is not None:
if _instances.gr_twisted.dead:
> raise RuntimeError("twisted reactor has stopped")
E RuntimeError: twisted reactor has stopped
.venv/lib/python3.12/site-packages/pytest_twisted/__init__.py:337: RuntimeError
____________________________________________________________________________________ test_upload_mutable _____________________________________________________________________________________
pyfuncitem = <Function test_upload_mutable>
def pytest_pyfunc_call(pyfuncitem):
"""Interface to async test call handler."""
# TODO: only handle 'our' tests? what is the point of handling others?
# well, because our interface allowed people to return deferreds
# from arbitrary tests so we kinda have to keep this up for now
maybe_hypothesis = getattr(pyfuncitem.obj, "hypothesis", None)
if maybe_hypothesis is None:
> _run_inline_callbacks(
_async_pytest_pyfunc_call,
pyfuncitem,
pyfuncitem.obj,
{}
)
.venv/lib/python3.12/site-packages/pytest_twisted/__init__.py:358:
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
f = <function _async_pytest_pyfunc_call at 0x7b4684b29080>, args = (<Function test_upload_mutable>, <function test_upload_mutable at 0x7b467d631580>, {})
def _run_inline_callbacks(f, *args):
"""Interface into Twisted greenlet to run and wait for a deferred."""
if _instances.gr_twisted is not None:
if _instances.gr_twisted.dead:
> raise RuntimeError("twisted reactor has stopped")
E RuntimeError: twisted reactor has stopped
.venv/lib/python3.12/site-packages/pytest_twisted/__init__.py:337: RuntimeError
_______________________________________________________________________________ test_upload_to_dircap_mutable ________________________________________________________________________________
pyfuncitem = <Function test_upload_to_dircap_mutable>
def pytest_pyfunc_call(pyfuncitem):
"""Interface to async test call handler."""
# TODO: only handle 'our' tests? what is the point of handling others?
# well, because our interface allowed people to return deferreds
# from arbitrary tests so we kinda have to keep this up for now
maybe_hypothesis = getattr(pyfuncitem.obj, "hypothesis", None)
if maybe_hypothesis is None:
> _run_inline_callbacks(
_async_pytest_pyfunc_call,
pyfuncitem,
pyfuncitem.obj,
{}
)
.venv/lib/python3.12/site-packages/pytest_twisted/__init__.py:358:
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
f = <function _async_pytest_pyfunc_call at 0x7b4684b29080>, args = (<Function test_upload_to_dircap_mutable>, <function test_upload_to_dircap_mutable at 0x7b467d631620>, {})
def _run_inline_callbacks(f, *args):
"""Interface into Twisted greenlet to run and wait for a deferred."""
if _instances.gr_twisted is not None:
if _instances.gr_twisted.dead:
> raise RuntimeError("twisted reactor has stopped")
E
9864
RuntimeError: twisted reactor has stopped
.venv/lib/python3.12/site-packages/pytest_twisted/__init__.py:337: RuntimeError
________________________________________________________________________ test_upload_to_dircap_mutable_uses_same_cap _________________________________________________________________________
pyfuncitem = <Function test_upload_to_dircap_mutable_uses_same_cap>
def pytest_pyfunc_call(pyfuncitem):
"""Interface to async test call handler."""
# TODO: only handle 'our' tests? what is the point of handling others?
# well, because our interface allowed people to return deferreds
# from arbitrary tests so we kinda have to keep this up for now
maybe_hypothesis = getattr(pyfuncitem.obj, "hypothesis", None)
if maybe_hypothesis is None:
> _run_inline_callbacks(
_async_pytest_pyfunc_call,
pyfuncitem,
pyfuncitem.obj,
{}
)
.venv/lib/python3.12/site-packages/pytest_twisted/__init__.py:358:
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
f = <function _async_pytest_pyfunc_call at 0x7b4684b29080>
args = (<Function test_upload_to_dircap_mutable_uses_same_cap>, <function test_upload_to_dircap_mutable_uses_same_cap at 0x7b467d6316c0>, {})
def _run_inline_callbacks(f, *args):
"""Interface into Twisted greenlet to run and wait for a deferred."""
if _instances.gr_twisted is not None:
if _instances.gr_twisted.dead:
> raise RuntimeError("twisted reactor has stopped")
E RuntimeError: twisted reactor has stopped
.venv/lib/python3.12/site-packages/pytest_twisted/__init__.py:337: RuntimeError
__________________________________________________________________________________________ test_ls ___________________________________________________________________________________________
pyfuncitem = <Function test_ls>
def pytest_pyfunc_call(pyfuncitem):
"""Interface to async test call handler."""
# TODO: only handle 'our' tests? what is the point of handling others?
# well, because our interface allowed people to return deferreds
# from arbitrary tests so we kinda have to keep this up for now
maybe_hypothesis = getattr(pyfuncitem.obj, "hypothesis", None)
if maybe_hypothesis is None:
> _run_inline_callbacks(
_async_pytest_pyfunc_call,
pyfuncitem,
pyfuncitem.obj,
{}
)
.venv/lib/python3.12/site-packages/pytest_twisted/__init__.py:358:
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
f = <function _async_pytest_pyfunc_call at 0x7b4684b29080>, args = (<Function test_ls>, <function test_ls at 0x7b467d631760>, {})
def _run_inline_callbacks(f, *args):
"""Interface into Twisted greenlet to run and wait for a deferred."""
if _instances.gr_twisted is not None:
if _instances.gr_twisted.dead:
> raise RuntimeError("twisted reactor has stopped")
E RuntimeError: twisted reactor has stopped
.venv/lib/python3.12/site-packages/pytest_twisted/__init__.py:337: RuntimeError
__________________________________________________________________________________ test_ls_exclude_dirnodes __________________________________________________________________________________
pyfuncitem = <Function test_ls_exclude_dirnodes>
def pytest_pyfunc_call(pyfuncitem):
"""Interface to async test call handler."""
# TODO: only handle 'our' tests? what is the point of handling others?
# well, because our interface allowed people to return deferreds
# from arbitrary tests so we kinda have to keep this up for now
maybe_hypothesis = getattr(pyfuncitem.obj, "hypothesis", None)
if maybe_hypothesis is None:
> _run_inline_callbacks(
_async_pytest_pyfunc_call,
pyfuncitem,
pyfuncitem.obj,
{}
)
.venv/lib/python3.12/site-packages/pytest_twisted/__init__.py:358:
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
f = <function _async_pytest_pyfunc_call at 0x7b4684b29080>, args = (<Function test_ls_exclude_dirnodes>, <function test_ls_exclude_dirnodes at 0x7b467d631800>, {})
def _run_inline_callbacks(f, *args):
"""Interface into Twisted greenlet to run and wait for a deferred."""
if _instances.gr_twisted is not None:
if _instances.gr_twisted.dead:
> raise RuntimeError("twisted reactor has stopped")
E RuntimeError: twisted reactor has stopped
.venv/lib/python3.12/site-packages/pytest_twisted/__init__.py:337: RuntimeError
_________________________________________________________________________________ test_ls_exclude_filenodes __________________________________________________________________________________
pyfuncitem = <Function test_ls_exclude_filenodes>
def pytest_pyfunc_call(pyfuncitem):
"""Interface to async test call handler."""
# TODO: only handle 'our' tests? what is the point of handling others?
# well, because our interface allowed people to return deferreds
# from arbitrary tests so we kinda have to keep this up for now
maybe_hypothesis = getattr(pyfuncitem.obj, "hypothesis", None)
if maybe_hypothesis is None:
> _run_inline_callbacks(
_async_pytest_pyfunc_call,
pyfuncitem,
pyfuncitem.obj,
{}
)
.venv/lib/python3.12/site-packages/pytest_twisted/__init__.py:358:
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
f = <function _async_pytest_pyfunc_call at 0x7b4684b29080>, args = (<Function test_ls_exclude_filenodes>, <function test_ls_exclude_filenodes at 0x7b467d6318a0>, {})
def _run_inline_callbacks(f, *args):
"""Interface into Twisted greenlet to run and wait for a deferred."""
if _instances.gr_twisted is not None:
if _instances.gr_twisted.dead:
> raise RuntimeError("twisted reactor has stopped")
E RuntimeError: twisted reactor has stopped
.venv/lib/python3.12/site-packages/pytest_twisted/__init__.py:337: RuntimeError
__________________________________________________________________________ test_ls_includes_most_authoritative_cap ___________________________________________________________________________
pyfuncitem = <Function test_ls_includes_most_authoritative_cap>
def pytest_pyfunc_call(pyfuncitem):
"""Interface to async test call handler."""
# TODO: only handle 'our' tests? what is the point of handling others?
# well, because our interface allowed people to return deferreds
# from arbitrary tests so we kinda have to keep this up for now
maybe_hypothesis = getattr(pyfuncitem.obj, "hypothesis", None)
if maybe_hypothesis is None:
> _run_inline_callbacks(
_async_pytest_pyfunc_call,
pyfuncitem,
pyfuncitem.obj,
{}
)
.venv/lib/python3.12/site-packages/pytest_twisted/__init__.py:358:
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
f = <function _async_pytest_pyfunc_call at 0x7b4684b29080>
args = (<Function test_ls_includes_most_authoritative_cap>, <function test_ls_includes_most_authoritative_cap at 0x7b467d631940>, {})
def _run_inline_callbacks(f, *args):
"""Interface into Twisted greenlet to run and wait for a deferred."""
if _instances.gr_twisted is not None:
if _instances.gr_twisted.dead:
> raise RuntimeError("twisted reactor has stopped")
E RuntimeError: twisted reactor has stopped
.venv/lib/python3.12/site-packages/pytest_twisted/__init__.py:337: RuntimeError
__________________________________________________________________________________ test_ls_nonexistent_path __________________________________________________________________________________
pyfuncitem = <Function test_ls_nonexistent_path>
def pytest_pyfunc_call(pyfuncitem):
"""Interface to async test call handler."""
# TODO: only handle 'our' tests? what is the point of handling others?
# well, because our interface allowed people to return deferreds
# from arbitrary tests so we kinda have to keep this up for now
maybe_hypothesis = getattr(pyfuncitem.obj, "hypothesis", None)
if maybe_hypothesis is None:
> _run_inline_callbacks(
_async_pytest_pyfunc_call,
pyfuncitem,
pyfuncitem.obj,
{}
)
.venv/lib/python3.12/site-packages/pytest_twisted/__init__.py:358:
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
f = <function _async_pytest_pyfunc_call at 0x7b4684b29080>, args = (<Function test_ls_nonexistent_path>, <function test_ls_nonexistent_path at 0x7b467d6319e0>, {})
def _run_inline_callbacks(f, *args):
"""Interface into Twisted greenlet to run and wait for a deferred."""
if _instances.gr_twisted is not None:
if _instances.gr_twisted.dead:
> raise RuntimeError("twisted reactor has stopped")
E RuntimeError: twisted reactor has stopped
.venv/lib/python3.12/site-packages/pytest_twisted/__init__.py:337: RuntimeError
________________________________________________________________________________________ test_get_cap ________________________________________________________________________________________
pyfuncitem = <Function test_get_cap>
def pytest_pyfunc_call(pyfuncitem):
"""Interface to async test call handler."""
# TODO: only handle 'our' tests? what is the point of handling others?
# well, because our interface allowed people to return deferreds
# from arbitrary tests so we kinda have to keep this up for now
maybe_hypothesis = getattr(pyfuncitem.obj, "hypothesis", None)
if maybe_hypothesis is None:
> _run_inline_callbacks(
_async_pytest_pyfunc_call,
pyfuncitem,
pyfuncitem.obj,
{}
)
.venv/lib/python3.12/site-packages/pytest_twisted/__init__.py:358:
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
f = <function _async_pytest_pyfunc_call at 0x7b4684b29080>, args = (<Function test_get_cap>, <function test_get_cap at 0x7b467d631a80>, {})
def _run_inline_callbacks(f, *args):
"""Interface into Twisted greenlet to run and wait for a deferred."""
if _instances.gr_twisted is not None:
if _instances.gr_twisted.dead:
> raise RuntimeError("twisted reactor has stopped")
E RuntimeError: twisted reactor has stopped
.venv/lib/python3.12/site-packages/pytest_twisted/__init__.py:337: RuntimeError
_________________________________________________________________________ test_get_cap_returns_none_for_missing_path _________________________________________________________________________
pyfuncitem = <Function test_get_cap_returns_none_for_missing_path>
def pytest_pyfunc_call(pyfuncitem):
"""Interface to async test call handler."""
# TODO: only handle 'our' tests? what is the point of handling others?
# well, because our interface allowed people to return deferreds
# from arbitrary tests so we kinda have to keep this up for now
maybe_hypothesis = getattr(pyfuncitem.obj, "hypothesis", None)
if maybe_hypothesis is None:
> _run_inline_callbacks(
_async_pytest_pyfunc_call,
pyfuncitem,
pyfuncitem.obj,
{}
)
.venv/lib/python3.12/site-packages/pytest_twisted/__init__.py:358:
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
f = <function _async_pytest_pyfunc_call at 0x7b4684b29080>
args = (<Function test_get_cap_returns_none_for_missing_path>, <function test_get_cap_returns_none_for_missing_path at 0x7b467d631b20>, {})
def _run_inline_callbacks(f, *args):
"""Interface into Twisted greenlet to run and wait for a deferred."""
if _instances.gr_twisted is not None:
if _instances.gr_twisted.dead:
> raise RuntimeError("twisted reactor has stopped")
E RuntimeError: twisted reactor has stopped
.venv/lib/python3.12/site-packages/pytest_twisted/__init__.py:337: RuntimeError
_______________________________________________________________________________ test_apply_connection_settings _______________________________________________________________________________
pyfuncitem = <Function test_apply_connection_settings>
def pytest_pyfunc_call(pyfuncitem):
"""Interface to async test call handler."""
# TODO: only handle 'our' tests? what is the point of handling others?
# well, because our interface allowed people to return deferreds
# from arbitrary tests so we kinda have to keep this up for now
maybe_hypothesis = getattr(pyfuncitem.obj, "hypothesis", None)
if maybe_hypothesis is None:
> _run_inline_callbacks(
_async_pytest_pyfunc_call,
pyfuncitem,
pyfuncitem.obj,
{}
)
.venv/lib/python3.12/site-packages/pytest_twisted/__init__.py:358:
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
f = <function _async_pytest_pyfunc_call at 0x7b4684b29080>, args = (<Function test_apply_connection_settings>, <function test_apply_connection_settings at 0x7b467d631bc0>, {})
def _run_inline_callbacks(f, *args):
"""Interface into Twisted greenlet to run and wait for a deferred."""
if _instances.gr_twisted is not None:
if _instances.gr_twisted.dead:
> raise RuntimeError("twisted reactor has stopped")
E RuntimeError: twisted reactor has stopped
.venv/lib/python3.12/site-packages/pytest_twisted/__init__.py:337: RuntimeError
================================================================================== short test summary info ===================================================================================
FAILED private_facts/test/tahoe_integration_test.py::test_no_html_in_server_error - AssertionError: illegal switch in blockon
FAILED private_facts/test/tahoe_integration_test.py::test_upload_to_dircap - RuntimeError: twisted reactor has stopped
FAILED private_facts/test/tahoe_integration_test.py::test_upload_mutable - RuntimeError: twisted reactor has stopped
FAILED private_facts/test/tahoe_integration_test.py::test_upload_to_dircap_mutable - RuntimeError: twisted reactor has stopped
FAILED private_facts/test/tahoe_integration_test.py::test_upload_to_dircap_mutable_uses_same_cap - RuntimeError: twisted reactor has stopped
FAILED private_facts/test/tahoe_integration_test.py::test_ls - RuntimeError: twisted reactor has stopped
FAILED private_facts/test/tahoe_integration_test.py::test_ls_exclude_dirnodes - RuntimeError: twisted reactor has stopped
FAILED private_facts/test/tahoe_integration_test.py::test_ls_exclude_filenodes - RuntimeError: twisted reactor has stopped
FAILED private_facts/test/tahoe_integration_test.py::test_ls_includes_most_authoritative_cap - RuntimeError: twisted reactor has stopped
FAILED private_facts/test/tahoe_integration_test.py::test_ls_nonexistent_path - RuntimeError: twisted reactor has stopped
FAILED private_facts/test/tahoe_integration_test.py::test_get_cap - RuntimeError: twisted reactor has stopped
FAILED private_facts/test/tahoe_integration_test.py::test_get_cap_returns_none_for_missing_path - RuntimeError: twisted reactor has stopped
FAILED private_facts/test/tahoe_integration_test.py::test_apply_connection_settings - RuntimeError: twisted reactor has stopped
ERROR private_facts/test/tahoe_integration_test.py::test_apply_connection_settings - ExceptionGroup: errors while tearing down <Module tahoe_integration_test.py> (3 sub-exceptions)
==================================================================== 13 failed, 4 passed, 35 deselected, 1 error in 5.08s ====================================================================
IIRC from talking to Chris, the solution might be to extricate zkapauthorizer entirely...
Metadata
Metadata
Assignees
Labels
No labels