diff --git a/test/conftest.py b/test/conftest.py index e6a85d6..b8e73b5 100644 --- a/test/conftest.py +++ b/test/conftest.py @@ -1,7 +1,27 @@ +from __future__ import annotations import logging import pytest +def pytest_addoption(parser: pytest.Parser) -> None: + parser.addoption( + "--oldsetup", + action="store_true", + default=False, + help="Run tests that require older setuptools", + ) + + +def pytest_collection_modifyitems( + config: pytest.Config, items: list[pytest.Item] +) -> None: + if not config.getoption("--oldsetup"): + skipper = pytest.mark.skip(reason="Only run when --oldsetup is given") + for item in items: + if "oldsetup" in item.keywords: + item.add_marker(skipper) + + @pytest.fixture(autouse=True) def capture_all_logs(caplog: pytest.LogCaptureFixture) -> None: caplog.set_level(logging.DEBUG, logger="versioningit") diff --git a/test/data/repos/git/default-version-bad.marks b/test/data/repos/git/default-version-bad.marks index 40e6dd3..b5dca6c 100644 --- a/test/data/repos/git/default-version-bad.marks +++ b/test/data/repos/git/default-version-bad.marks @@ -1 +1,2 @@ describe_exclude +oldsetup diff --git a/tox.ini b/tox.ini index d50d4b9..fa8e72f 100644 --- a/tox.ini +++ b/tox.ini @@ -28,7 +28,7 @@ deps = pytest-mock wheel commands = - pytest {posargs:-v} test + pytest {posargs:-v} --oldsetup test [testenv:lint] skip_install = True @@ -58,6 +58,7 @@ addopts = filterwarnings = error markers = describe_exclude: Tests that use `git describe --exclude` (Added in Git 2.13.0) + oldsetup: Tests to only run under pre-v64 setuptools norecursedirs = test/data [coverage:run]