Wrap ex in new test, change dir helpers to use `pathlib.Path`

ipc_failure_while_streaming
Tyler Goodlet 2023-01-27 16:40:28 -05:00
parent fb9ff45745
commit 4f8586a928
3 changed files with 54 additions and 8 deletions

View File

@ -7,6 +7,7 @@ import os
import random import random
import signal import signal
import platform import platform
import pathlib
import time import time
import inspect import inspect
from functools import partial, wraps from functools import partial, wraps
@ -113,14 +114,21 @@ no_windows = pytest.mark.skipif(
) )
def repodir(): def repodir() -> pathlib.Path:
"""Return the abspath to the repo directory. '''
""" Return the abspath to the repo directory.
dirname = os.path.dirname
dirpath = os.path.abspath( '''
dirname(dirname(os.path.realpath(__file__))) # 2 parents up to step up through tests/<repo_dir>
) return pathlib.Path(__file__).parent.parent.absolute()
return dirpath
def examples_dir() -> pathlib.Path:
'''
Return the abspath to the examples directory as `pathlib.Path`.
'''
return repodir() / 'examples'
def pytest_addoption(parser): def pytest_addoption(parser):

View File

@ -0,0 +1,38 @@
'''
Sketchy network blackoutz, ugly byzantine gens, puedes eschuchar la
cancelacion?..
'''
import pytest
from _pytest.pathlib import import_path
import trio
from conftest import (
examples_dir,
)
@pytest.mark.parametrize(
'debug_mode',
[False, True],
ids=['debug_mode', 'no_debug_mode'],
)
def test_child_breaks_ipc_channel_during_stream(
debug_mode: bool,
):
'''
Ensure we can (purposely) break IPC during streaming and it's still
possible for the (simulated) user to kill the actor tree using
SIGINT.
'''
mod = import_path(
examples_dir() / 'advanced_faults' / 'ipc_failure_during_stream.py',
root=examples_dir(),
)
with pytest.raises(KeyboardInterrupt):
trio.run(
mod.main,
debug_mode,
)