From ba8d1a1a6e314dd681aa5ef5732bd8b70467cb50 Mon Sep 17 00:00:00 2001 From: Jan Mrowiec Date: Sun, 6 Sep 2026 18:25:44 +0200 Subject: [PATCH 1/2] Fix INTERNALERROR for bare exception class in only_rerun/rerun_except --- src/pytest_rerunfailures.py | 4 +++- tests/test_pytest_rerunfailures.py | 4 ++++ 2 files changed, 7 insertions(+), 1 deletion(-) diff --git a/src/pytest_rerunfailures.py b/src/pytest_rerunfailures.py index 98934bcc..6e100685 100644 --- a/src/pytest_rerunfailures.py +++ b/src/pytest_rerunfailures.py @@ -506,7 +506,9 @@ def _get_rerun_filter_regex(item, regex_name): if rerun_marker is not None and regex_name in rerun_marker.kwargs: regex = rerun_marker.kwargs[regex_name] - if isinstance(regex, str): + if isinstance(regex, str) or ( + isinstance(regex, type) and issubclass(regex, BaseException) + ): regex = [regex] else: regex = getattr(item.session.config.option, regex_name) diff --git a/tests/test_pytest_rerunfailures.py b/tests/test_pytest_rerunfailures.py index 63f34556..acd0179f 100644 --- a/tests/test_pytest_rerunfailures.py +++ b/tests/test_pytest_rerunfailures.py @@ -1764,6 +1764,10 @@ def test_fail(): ("only_rerun=[ValueError]", False), ("rerun_except=[AssertionError]", False), ("rerun_except=[ValueError]", True), + ("only_rerun=AssertionError", True), + ("only_rerun=ValueError", False), + ("rerun_except=AssertionError", False), + ("rerun_except=ValueError", True), ], ) def test_rerun_filter_accepts_exception_classes(testdir, filter_kwarg, should_rerun): From 2527404422f7af7371d08f4351eeb761255d8fe2 Mon Sep 17 00:00:00 2001 From: Jan Mrowiec Date: Sun, 6 Sep 2026 18:46:25 +0200 Subject: [PATCH 2/2] Add changelog for #362 --- changes/362.bugfix.rst | 1 + 1 file changed, 1 insertion(+) create mode 100644 changes/362.bugfix.rst diff --git a/changes/362.bugfix.rst b/changes/362.bugfix.rst new file mode 100644 index 00000000..0af2f58a --- /dev/null +++ b/changes/362.bugfix.rst @@ -0,0 +1 @@ +Fix ``INTERNALERROR`` when ``only_rerun`` or ``rerun_except`` is given a bare exception class instead of a list.