diff --git a/CHANGELOG.rst b/CHANGELOG.rst index 86a2d9b84..a1bcd1917 100644 --- a/CHANGELOG.rst +++ b/CHANGELOG.rst @@ -627,7 +627,7 @@ Removals See our `docs `__ on information on how to update your code. -- `#3086 `_: ``[pytest]`` section in **setup.cfg** files is not longer supported, use ``[tool:pytest]`` instead. ``setup.cfg`` files +- `#3086 `_: ``[pytest]`` section in **setup.cfg** files is no longer supported, use ``[tool:pytest]`` instead. ``setup.cfg`` files are meant for use with ``distutils``, and a section named ``pytest`` has notoriously been a source of conflicts and bugs. Note that for **pytest.ini** and **tox.ini** files the section remains ``[pytest]``. @@ -1849,7 +1849,7 @@ Features exits the debugger. On python 3.2 and higher, use CTRL+D. (`#3299 `_) -- pytest not longer changes the log level of the root logger when the +- pytest no longer changes the log level of the root logger when the ``log-level`` parameter has greater numeric value than that of the level of the root logger, which makes it play better with custom logging configuration in user code. (`#3307 `_) diff --git a/testing/conftest.py b/testing/conftest.py index ecc945279..4badf3016 100644 --- a/testing/conftest.py +++ b/testing/conftest.py @@ -11,9 +11,10 @@ def pytest_collection_modifyitems(config, items): """ fast_items = [] slow_items = [] + slowest_items = [] neutral_items = [] - slow_fixturenames = ("testdir",) + spawn_names = {"spawn_pytest", "spawn"} for item in items: try: @@ -23,15 +24,19 @@ def pytest_collection_modifyitems(config, items): # (https://github.com/pytest-dev/pytest/issues/5070) neutral_items.append(item) else: - if any(x for x in fixtures if x in slow_fixturenames): - slow_items.append(item) + if "testdir" in fixtures: + if spawn_names.intersection(item.function.__code__.co_names): + item.add_marker(pytest.mark.uses_pexpect) + slowest_items.append(item) + else: + slow_items.append(item) else: marker = item.get_closest_marker("slow") if marker: - slow_items.append(item) + slowest_items.append(item) else: fast_items.append(item) - items[:] = fast_items + neutral_items + slow_items + items[:] = fast_items + neutral_items + slow_items + slowest_items yield diff --git a/tox.ini b/tox.ini index 1f024b2f5..a04f91ae5 100644 --- a/tox.ini +++ b/tox.ini @@ -175,6 +175,8 @@ markers = baz # conftest.py reorders tests moving slow ones to the end of the list slow + # experimental mark for all tests using pexpect + uses_pexpect [flake8] max-line-length = 120