From 7f78d30e1f2866bf27bdccb6a728c0055182c841 Mon Sep 17 00:00:00 2001 From: Zac-HD Date: Sun, 6 Jan 2019 14:28:42 +1100 Subject: [PATCH] Deterministic scheduling via Hypothesis --- newsfragments/73.feature.rst | 3 +++ pytest_trio/plugin.py | 12 ++++++++++++ 2 files changed, 15 insertions(+) create mode 100644 newsfragments/73.feature.rst diff --git a/newsfragments/73.feature.rst b/newsfragments/73.feature.rst new file mode 100644 index 0000000..9993cdf --- /dev/null +++ b/newsfragments/73.feature.rst @@ -0,0 +1,3 @@ +pytest-trio now makes the Trio scheduler deterministic while running +inside a Hypothesis test. Hopefully you won't see any change, but if +you had scheduler-dependent bugs Hypothesis will be more effective now. diff --git a/pytest_trio/plugin.py b/pytest_trio/plugin.py index b567cf9..a665c55 100644 --- a/pytest_trio/plugin.py +++ b/pytest_trio/plugin.py @@ -23,6 +23,18 @@ ORDERED_DICTS = False +try: + import hypothesis.strategies as st +except ImportError: + pass +else: + # On recent versions of Hypothesis, make the Trio scheduler deterministic + # even though it uses a module-scoped Random instance. This works + # regardless of whether or not the random_module strategy is used. + if hasattr(st.random_module, 'register'): + st.random_module.register(trio._core._run._r) + + def pytest_addoption(parser): parser.addini( "trio_mode",