Updated script that can be controled by Nodejs web app
This commit is contained in:
@@ -0,0 +1,54 @@
|
||||
from __future__ import annotations
|
||||
|
||||
import inspect
|
||||
from typing import NoReturn
|
||||
|
||||
import pytest
|
||||
|
||||
from ..testing import MockClock, trio_test
|
||||
|
||||
RUN_SLOW = True
|
||||
SKIP_OPTIONAL_IMPORTS = False
|
||||
|
||||
|
||||
def pytest_addoption(parser: pytest.Parser) -> None:
|
||||
parser.addoption("--run-slow", action="store_true", help="run slow tests")
|
||||
parser.addoption(
|
||||
"--skip-optional-imports",
|
||||
action="store_true",
|
||||
help="skip tests that rely on libraries not required by trio itself",
|
||||
)
|
||||
|
||||
|
||||
def pytest_configure(config: pytest.Config) -> None:
|
||||
global RUN_SLOW
|
||||
RUN_SLOW = config.getoption("--run-slow", default=True)
|
||||
global SKIP_OPTIONAL_IMPORTS
|
||||
SKIP_OPTIONAL_IMPORTS = config.getoption("--skip-optional-imports", default=False)
|
||||
|
||||
|
||||
@pytest.fixture
|
||||
def mock_clock() -> MockClock:
|
||||
return MockClock()
|
||||
|
||||
|
||||
@pytest.fixture
|
||||
def autojump_clock() -> MockClock:
|
||||
return MockClock(autojump_threshold=0)
|
||||
|
||||
|
||||
# FIXME: split off into a package (or just make part of Trio's public
|
||||
# interface?), with config file to enable? and I guess a mark option too; I
|
||||
# guess it's useful with the class- and file-level marking machinery (where
|
||||
# the raw @trio_test decorator isn't enough).
|
||||
@pytest.hookimpl(tryfirst=True)
|
||||
def pytest_pyfunc_call(pyfuncitem: pytest.Function) -> None:
|
||||
if inspect.iscoroutinefunction(pyfuncitem.obj):
|
||||
pyfuncitem.obj = trio_test(pyfuncitem.obj)
|
||||
|
||||
|
||||
def skip_if_optional_else_raise(error: ImportError) -> NoReturn:
|
||||
if SKIP_OPTIONAL_IMPORTS:
|
||||
pytest.skip(error.msg, allow_module_level=True)
|
||||
else: # pragma: no cover
|
||||
raise error
|
||||
Reference in New Issue
Block a user