From: Mike Bayer Date: Thu, 12 Mar 2020 23:44:37 +0000 (-0400) Subject: Dont raise on pytest deprecation warnings X-Git-Tag: rel_1_4_0b1~466 X-Git-Url: http://git.ipfire.org/?a=commitdiff_plain;h=993e6449e3f5f3532f6f5426b824718435ce6c6d;p=thirdparty%2Fsqlalchemy%2Fsqlalchemy.git 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 --- 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 c39f9f32ea..f2e7d706f6 100644 --- a/lib/sqlalchemy/testing/plugin/pytestplugin.py +++ b/lib/sqlalchemy/testing/plugin/pytestplugin.py @@ -160,6 +160,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(): @@ -188,6 +193,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 cc11e556c2..6b42c98cb6 100644 --- a/lib/sqlalchemy/testing/warnings.py +++ b/lib/sqlalchemy/testing/warnings.py @@ -34,6 +34,15 @@ def setup_filters(): # ignore 2.0 warnings unless we are explicitly testing for them warnings.filterwarnings("ignore", category=sa_exc.RemovedIn20Warning) + 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.