From 5fd4002c62d3538efc3ff51f92850f4c0bf4ffab Mon Sep 17 00:00:00 2001 From: Maxwell G Date: Sat, 12 Aug 2023 00:21:50 +0000 Subject: [PATCH] Fix Python 3.12 test failures --- tests/test_abc.py | 15 ++++++++++++--- tests/test_generics.py | 6 ++++-- tests/test_types.py | 6 +++++- 3 files changed, 21 insertions(+), 6 deletions(-) diff --git a/tests/test_abc.py b/tests/test_abc.py index 8beed04..d7e8f3d 100644 --- a/tests/test_abc.py +++ b/tests/test_abc.py @@ -1,4 +1,5 @@ import abc +import sys import pytest @@ -40,7 +41,15 @@ def test_model_subclassing_abstract_base_classes_without_implementation_raises_e with pytest.raises(TypeError) as excinfo: Model(some_field='some_value') - assert str(excinfo.value) == ( - "Can't instantiate abstract class Model with abstract methods " - "my_abstract_classmethod, my_abstract_method, my_abstract_property, my_abstract_staticmethod" # noqa: Q000 + message = ( + ( + "Can't instantiate abstract class Model with abstract methods " + "my_abstract_classmethod, my_abstract_method, my_abstract_property, my_abstract_staticmethod" # noqa: Q000 + ) + if sys.version_info < (3, 12) + else ( + "Can't instantiate abstract class Model without an implementation for abstract methods " + "'my_abstract_classmethod', 'my_abstract_method', 'my_abstract_property', 'my_abstract_staticmethod'" # noqa: Q000 + ) ) + assert str(excinfo.value) == message diff --git a/tests/test_generics.py b/tests/test_generics.py index 68f93d4..23e6263 100644 --- a/tests/test_generics.py +++ b/tests/test_generics.py @@ -579,9 +579,11 @@ def test_partial_specification_name(): b: BT partial_model = Model[int, BT] - assert partial_model.__name__ == 'Model[int, BT]' + expected = 'Model[int, BT]' if sys.version_info < (3, 12) else 'Model[int, TypeVar]' + assert partial_model.__name__ == expected concrete_model = partial_model[str] - assert concrete_model.__name__ == 'Model[int, BT][str]' + expected += '[str]' + assert concrete_model.__name__ == expected def test_partial_specification_instantiation(): diff --git a/tests/test_types.py b/tests/test_types.py index b908d46..4277398 100644 --- a/tests/test_types.py +++ b/tests/test_types.py @@ -2713,7 +2713,11 @@ def test_secretfield(): class Foobar(SecretField): ... - message = "Can't instantiate abstract class Foobar with abstract methods? get_secret_value" + message = ( + "Can't instantiate abstract class Foobar with abstract methods? get_secret_value" + if sys.version_info < (3, 12) + else "Can't instantiate abstract class Foobar without an implementation for abstract method 'get_secret_value'" + ) with pytest.raises(TypeError, match=message): Foobar() -- 2.41.0