From 82ab7c825d30cce4a02c5226755e744e28752466 Mon Sep 17 00:00:00 2001 From: Mike Bayer Date: Thu, 12 Mar 2020 19:44:37 -0400 Subject: [PATCH] Dont raise on pytest deprecation warnings py.test 5.4.0 emits deprecation warnings for pytest.Class. make sure we don't raise for these, and log the code that will be used for 5.4.0 when we bump requirements. Fixes: #5201 Change-Id: I83e0402c4a6b2365a63b58d052c6989df3a37328 (cherry picked from commit be26fd13c124d5d53496cca98ce371c45c07c205) --- doc/build/changelog/unreleased_13/5201.rst | 7 +++++++ lib/sqlalchemy/testing/plugin/pytestplugin.py | 13 +++++++++++++ lib/sqlalchemy/testing/warnings.py | 9 +++++++++ 3 files changed, 29 insertions(+) create mode 100644 doc/build/changelog/unreleased_13/5201.rst diff --git a/doc/build/changelog/unreleased_13/5201.rst b/doc/build/changelog/unreleased_13/5201.rst new file mode 100644 index 0000000000..45ec9dbc49 --- /dev/null +++ b/doc/build/changelog/unreleased_13/5201.rst @@ -0,0 +1,7 @@ +.. change:: + :tags: bug, tests + :tickets: 5201 + + Fixed an issue that prevented the test suite from running with the + recently released py.test 5.4.0. + diff --git a/lib/sqlalchemy/testing/plugin/pytestplugin.py b/lib/sqlalchemy/testing/plugin/pytestplugin.py index 6e958ab5e1..2c2cc398e8 100644 --- a/lib/sqlalchemy/testing/plugin/pytestplugin.py +++ b/lib/sqlalchemy/testing/plugin/pytestplugin.py @@ -162,6 +162,11 @@ def pytest_collection_modifyitems(session, config, items): if sub_cls is not test_class.cls: per_cls_dict = rebuilt_items[test_class.cls] + # in pytest 5.4.0 + # for inst in pytest.Class.from_parent( + # test_class.parent.parent, name=sub_cls.__name__ + # ).collect(): + for inst in pytest.Class( sub_cls.__name__, parent=test_class.parent.parent ).collect(): @@ -190,6 +195,14 @@ def pytest_collection_modifyitems(session, config, items): def pytest_pycollect_makeitem(collector, name, obj): if inspect.isclass(obj) and plugin_base.want_class(name, obj): + + # in pytest 5.4.0 + # return [ + # pytest.Class.from_parent(collector, + # name=parametrize_cls.__name__) + # for parametrize_cls in _parametrize_cls(collector.module, obj) + # ] + return [ pytest.Class(parametrize_cls.__name__, parent=collector) for parametrize_cls in _parametrize_cls(collector.module, obj) diff --git a/lib/sqlalchemy/testing/warnings.py b/lib/sqlalchemy/testing/warnings.py index 3624118517..6bb89a3cf8 100644 --- a/lib/sqlalchemy/testing/warnings.py +++ b/lib/sqlalchemy/testing/warnings.py @@ -38,6 +38,15 @@ def setup_filters(): "ignore", category=DeprecationWarning, message=".*inspect.getargspec" ) + try: + import pytest + except ImportError: + pass + else: + warnings.filterwarnings( + "once", category=pytest.PytestDeprecationWarning + ) + def assert_warnings(fn, warning_msgs, regex=False): """Assert that each of the given warnings are emitted by fn. -- 2.47.2