Spaces:
Paused
Paused
| from typing import Optional | |
| from typing import Union | |
| from _pytest.config import Config | |
| from _pytest.config import ExitCode | |
| from _pytest.config.argparsing import Parser | |
| from _pytest.fixtures import FixtureDef | |
| from _pytest.fixtures import SubRequest | |
| import pytest | |
| def pytest_addoption(parser: Parser) -> None: | |
| group = parser.getgroup("debugconfig") | |
| group.addoption( | |
| "--setupplan", | |
| "--setup-plan", | |
| action="store_true", | |
| help="Show what fixtures and tests would be executed but " | |
| "don't execute anything", | |
| ) | |
| def pytest_fixture_setup( | |
| fixturedef: FixtureDef[object], request: SubRequest | |
| ) -> Optional[object]: | |
| # Will return a dummy fixture if the setuponly option is provided. | |
| if request.config.option.setupplan: | |
| my_cache_key = fixturedef.cache_key(request) | |
| fixturedef.cached_result = (None, my_cache_key, None) | |
| return fixturedef.cached_result | |
| return None | |
| def pytest_cmdline_main(config: Config) -> Optional[Union[int, ExitCode]]: | |
| if config.option.setupplan: | |
| config.option.setuponly = True | |
| config.option.setupshow = True | |
| return None | |