forked from TrueCloudLab/frostfs-testlib
31 lines
1.2 KiB
Python
31 lines
1.2 KiB
Python
import pytest
|
|
|
|
|
|
@pytest.hookimpl(specname="pytest_collection_modifyitems")
|
|
def pytest_add_frostfs_marker(items: list[pytest.Item]):
|
|
# All tests which reside in frostfs nodeid are granted with frostfs marker, excluding
|
|
# nodeid = full path of the test
|
|
# 1. plugins
|
|
# 2. testlib itself
|
|
for item in items:
|
|
location = item.location[0]
|
|
if "frostfs" in location and "plugin" not in location and "testlib" not in location:
|
|
item.add_marker("frostfs")
|
|
|
|
|
|
# pytest hook. Do not rename
|
|
@pytest.hookimpl(trylast=True)
|
|
def pytest_collection_modifyitems(items: list[pytest.Item]):
|
|
# The order of running tests corresponded to the suites
|
|
items.sort(key=lambda item: item.location[0])
|
|
|
|
# Change order of tests based on @pytest.mark.order(<int>) marker
|
|
def order(item: pytest.Item) -> int:
|
|
order_marker = item.get_closest_marker("order")
|
|
if order_marker and (len(order_marker.args) != 1 or not isinstance(order_marker.args[0], int)):
|
|
raise RuntimeError("Incorrect usage of pytest.mark.order")
|
|
|
|
order_value = order_marker.args[0] if order_marker else 0
|
|
return order_value
|
|
|
|
items.sort(key=lambda item: order(item))
|