python-pydantic/Fix-Python-3.12-test-failures.patch

79 lines
2.8 KiB
Diff
Raw Normal View History

From 5fd4002c62d3538efc3ff51f92850f4c0bf4ffab Mon Sep 17 00:00:00 2001
From: Maxwell G <maxwell@gtmx.me>
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