From 68e9e1fcd736462db43b563b21a83b1927f3faa4 Mon Sep 17 00:00:00 2001 From: Ashley Scillitoe Date: Mon, 24 Oct 2022 11:09:23 +0100 Subject: [PATCH 1/3] random_seeder option to define entry points to use --- src/pytest_randomly/__init__.py | 14 ++++++++++++-- 1 file changed, 12 insertions(+), 2 deletions(-) diff --git a/src/pytest_randomly/__init__.py b/src/pytest_randomly/__init__.py index 4887c48..cf9a399 100644 --- a/src/pytest_randomly/__init__.py +++ b/src/pytest_randomly/__init__.py @@ -6,7 +6,7 @@ import sys from itertools import groupby from types import ModuleType -from typing import Any, Callable, TypeVar +from typing import Any, Callable, TypeVar, List from _pytest.config import Config from _pytest.config.argparsing import Parser @@ -99,6 +99,14 @@ def pytest_addoption(parser: Parser) -> None: default=True, help="Stop pytest-randomly from randomly reorganizing the test order.", ) + group._addoption( + "--randomly-seeder", + action="append", + dest="randomly_seeders", + help="""Give the name of a pytest_randomly.random_seeder entry point to use. + Multiple entry points can be set by defining this option multiple times""", + ) + def pytest_configure(config: Config) -> None: @@ -166,8 +174,10 @@ def _reseed(config: Config, offset: int = 0) -> int: np_random.set_state(np_random_states[numpy_seed]) if entrypoint_reseeds is None: + seeders: List[str] = config.getoption("randomly_seeders") eps = entry_points(group="pytest_randomly.random_seeder") - entrypoint_reseeds = [e.load() for e in eps] + seeders = [] if seeders is None else seeders + entrypoint_reseeds = [e.load() for e in eps if e.name in seeders] for reseed in entrypoint_reseeds: reseed(seed) From 4059b6bdd68046f135cda8057854f9f0221a75cf Mon Sep 17 00:00:00 2001 From: "pre-commit-ci[bot]" <66853113+pre-commit-ci[bot]@users.noreply.github.com> Date: Mon, 24 Oct 2022 10:21:33 +0000 Subject: [PATCH 2/3] [pre-commit.ci] auto fixes from pre-commit.com hooks for more information, see https://pre-commit.ci --- src/pytest_randomly/__init__.py | 5 ++--- 1 file changed, 2 insertions(+), 3 deletions(-) diff --git a/src/pytest_randomly/__init__.py b/src/pytest_randomly/__init__.py index cf9a399..b4de1e5 100644 --- a/src/pytest_randomly/__init__.py +++ b/src/pytest_randomly/__init__.py @@ -6,7 +6,7 @@ import sys from itertools import groupby from types import ModuleType -from typing import Any, Callable, TypeVar, List +from typing import Any, Callable, List, TypeVar from _pytest.config import Config from _pytest.config.argparsing import Parser @@ -108,7 +108,6 @@ def pytest_addoption(parser: Parser) -> None: ) - def pytest_configure(config: Config) -> None: if config.pluginmanager.hasplugin("xdist"): config.pluginmanager.register(XdistHooks()) @@ -174,7 +173,7 @@ def _reseed(config: Config, offset: int = 0) -> int: np_random.set_state(np_random_states[numpy_seed]) if entrypoint_reseeds is None: - seeders: List[str] = config.getoption("randomly_seeders") + seeders: list[str] = config.getoption("randomly_seeders") eps = entry_points(group="pytest_randomly.random_seeder") seeders = [] if seeders is None else seeders entrypoint_reseeds = [e.load() for e in eps if e.name in seeders] From cc19485dcb86bfb42063a0234df4daf271191371 Mon Sep 17 00:00:00 2001 From: Ashley Scillitoe Date: Mon, 24 Oct 2022 11:28:51 +0100 Subject: [PATCH 3/3] Remove unnecessary typing List import --- src/pytest_randomly/__init__.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/pytest_randomly/__init__.py b/src/pytest_randomly/__init__.py index cf9a399..18d9e5f 100644 --- a/src/pytest_randomly/__init__.py +++ b/src/pytest_randomly/__init__.py @@ -6,7 +6,7 @@ import sys from itertools import groupby from types import ModuleType -from typing import Any, Callable, TypeVar, List +from typing import Any, Callable, TypeVar from _pytest.config import Config from _pytest.config.argparsing import Parser