Skip to content

Commit cfe52f8

Browse files
committed
Introduce feature directories in tests
This sets up a directory structure where an entire directory gets a feature mark. This makes it easy to skip entire feature tests.
1 parent b6d8f08 commit cfe52f8

19 files changed

Lines changed: 14 additions & 80 deletions

tests/conftest.py

Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,7 @@
11
import subprocess
22
import uuid
33
from functools import cached_property
4+
from pathlib import Path
45

56
import apypie
67
import paramiko
@@ -242,6 +243,19 @@ def pytest_configure(config):
242243
config.user_parameters = UserParameters(config)
243244

244245

246+
def pytest_collection_modifyitems(config, items):
247+
feature_dir = config.rootdir / 'tests' / 'feature'
248+
for item in items:
249+
try:
250+
rel_path = Path(item.fspath).relative_to(feature_dir)
251+
except ValueError:
252+
# Not in the features directory
253+
pass
254+
else:
255+
feature = rel_path.parts[0]
256+
item.add_marker(pytest.mark.feature(feature))
257+
258+
245259
def pytest_runtest_setup(item):
246260
feature_markers = set(mark.args[0] for mark in item.iter_markers(name="feature"))
247261
if feature_markers:

tests/feature/__init__.py

Whitespace-only changes.
Lines changed: 0 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,3 @@
1-
import pytest
2-
3-
pytestmark = pytest.mark.feature("iop")
4-
5-
61
def test_advisor_backend_api_service(server):
72
service = server.service("iop-service-advisor-backend-api")
83
assert service.is_running

tests/iop/test_advisor_frontend.py renamed to tests/feature/iop/test_advisor_frontend.py

Lines changed: 0 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,3 @@
1-
import pytest
2-
3-
pytestmark = pytest.mark.feature("iop")
4-
5-
61
def test_advisor_frontend_assets_directory(server):
72
assets_dir = server.file("/var/www/iop/assets/apps/advisor")
83
assert assets_dir.exists

tests/iop/test_cvemap_downloader.py renamed to tests/feature/iop/test_cvemap_downloader.py

Lines changed: 0 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,3 @@
1-
import pytest
2-
3-
pytestmark = pytest.mark.feature("iop")
4-
5-
61
def test_cvemap_download_script(server):
72
script = server.file("/usr/local/bin/iop-cvemap-download.sh")
83
assert script.exists
Lines changed: 0 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,3 @@
1-
import pytest
2-
3-
pytestmark = pytest.mark.feature("iop")
4-
5-
61
def test_engine_service(server):
72
service = server.service("iop-core-engine")
83
assert service.is_running
Lines changed: 0 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,3 @@
1-
import pytest
2-
3-
pytestmark = pytest.mark.feature("iop")
4-
5-
61
def test_gateway_service(server):
72
service = server.service("iop-core-gateway")
83
assert service.is_running
Lines changed: 0 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,3 @@
1-
import pytest
2-
3-
pytestmark = pytest.mark.feature("iop")
4-
5-
61
def test_ingress_service(server):
72
service = server.service("iop-core-ingress")
83
assert service.is_running
Lines changed: 0 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,3 @@
1-
import pytest
2-
3-
pytestmark = pytest.mark.feature("iop")
4-
5-
61
def test_iop_core_kafka_service(server):
72
service = server.service("iop-core-kafka")
83
assert service.is_running

0 commit comments

Comments
 (0)