forked from TrueCloudLab/frostfs-testlib
[#349] Fixed hook pytest-collect-modifyitems
Signed-off-by: Ilyas Niyazov <i.niyazov@yadro.com>
This commit is contained in:
parent
80dd8d0b16
commit
aed20e02ac
2 changed files with 18 additions and 3 deletions
|
@ -1,4 +1,4 @@
|
||||||
__version__ = "2.0.1"
|
__version__ = "2.0.1"
|
||||||
|
|
||||||
from .fixtures import configure_testlib, hosting, temp_directory
|
from .fixtures import configure_testlib, hosting, temp_directory
|
||||||
from .hooks import pytest_collection_modifyitems
|
from .hooks import pytest_add_frostfs_marker, pytest_collection_modifyitems
|
||||||
|
|
|
@ -1,8 +1,8 @@
|
||||||
import pytest
|
import pytest
|
||||||
|
|
||||||
|
|
||||||
@pytest.hookimpl
|
@pytest.hookimpl(specname="pytest_collection_modifyitems")
|
||||||
def pytest_collection_modifyitems(items: list[pytest.Item]):
|
def pytest_add_frostfs_marker(items: list[pytest.Item]):
|
||||||
# All tests which reside in frostfs nodeid are granted with frostfs marker, excluding
|
# All tests which reside in frostfs nodeid are granted with frostfs marker, excluding
|
||||||
# nodeid = full path of the test
|
# nodeid = full path of the test
|
||||||
# 1. plugins
|
# 1. plugins
|
||||||
|
@ -11,3 +11,18 @@ def pytest_collection_modifyitems(items: list[pytest.Item]):
|
||||||
location = item.location[0]
|
location = item.location[0]
|
||||||
if "frostfs" in location and "plugin" not in location and "testlib" not in location:
|
if "frostfs" in location and "plugin" not in location and "testlib" not in location:
|
||||||
item.add_marker("frostfs")
|
item.add_marker("frostfs")
|
||||||
|
|
||||||
|
|
||||||
|
# pytest hook. Do not rename
|
||||||
|
@pytest.hookimpl(trylast=True)
|
||||||
|
def pytest_collection_modifyitems(items: list[pytest.Item]):
|
||||||
|
# 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))
|
||||||
|
|
Loading…
Add table
Reference in a new issue