Handle varied multierror order with broker resource err
parent
0dcffeee0f
commit
cef9ab7353
|
@ -122,16 +122,20 @@ def test_multierror_fast_nursery(arb_addr, start_method, num_subactors, delay):
|
||||||
trio.run(main)
|
trio.run(main)
|
||||||
|
|
||||||
assert exc_info.type == tractor.MultiError
|
assert exc_info.type == tractor.MultiError
|
||||||
err = exc_info.value
|
multi = exc_info.value
|
||||||
exceptions = err.exceptions
|
exceptions = multi.exceptions
|
||||||
|
|
||||||
if len(exceptions) == 2:
|
if len(exceptions) == 2:
|
||||||
# sometimes oddly now there's an embedded BrokenResourceError ?
|
# sometimes there's an embedded BrokenResourceError
|
||||||
exceptions = exceptions[1].exceptions
|
# next to the main multierror?
|
||||||
|
for exc in exceptions:
|
||||||
|
if hasattr(exc, 'exceptions'):
|
||||||
|
multi = exc
|
||||||
|
break
|
||||||
|
|
||||||
assert len(exceptions) == num_subactors
|
assert len(multi.exceptions) == num_subactors
|
||||||
|
|
||||||
for exc in exceptions:
|
for exc in multi.exceptions:
|
||||||
assert isinstance(exc, tractor.RemoteActorError)
|
assert isinstance(exc, tractor.RemoteActorError)
|
||||||
assert exc.type == AssertionError
|
assert exc.type == AssertionError
|
||||||
|
|
||||||
|
@ -355,9 +359,13 @@ async def test_nested_multierrors(loglevel, start_method):
|
||||||
depth=depth,
|
depth=depth,
|
||||||
)
|
)
|
||||||
except trio.MultiError as err:
|
except trio.MultiError as err:
|
||||||
|
_err = err
|
||||||
assert len(err.exceptions) == subactor_breadth
|
assert len(err.exceptions) == subactor_breadth
|
||||||
for subexc in err.exceptions:
|
for subexc in err.exceptions:
|
||||||
|
|
||||||
|
# NOTE: use [print(f'err: {err}') for err in _err.exceptions]
|
||||||
|
# to inspect errors from console on failure
|
||||||
|
|
||||||
# verify first level actor errors are wrapped as remote
|
# verify first level actor errors are wrapped as remote
|
||||||
if platform.system() == 'Windows':
|
if platform.system() == 'Windows':
|
||||||
|
|
||||||
|
@ -388,6 +396,8 @@ async def test_nested_multierrors(loglevel, start_method):
|
||||||
else:
|
else:
|
||||||
assert (subexc.type is tractor.RemoteActorError) or (
|
assert (subexc.type is tractor.RemoteActorError) or (
|
||||||
subexc.type is trio.Cancelled)
|
subexc.type is trio.Cancelled)
|
||||||
|
else:
|
||||||
|
pytest.fail(f'Got no error from nursery?')
|
||||||
|
|
||||||
|
|
||||||
@no_windows
|
@no_windows
|
||||||
|
|
Loading…
Reference in New Issue