To run system tests, make sure you have the following dependencies installed:
-- python3
-- pytest
+- python3 (3.10 and newer)
- perl
-- dnspython
-- pytest-xdist (for parallel execution)
-- python-jinja2
-Individual system tests might also require additional dependencies. If those
-are missing, the affected tests will be skipped and should produce a message
-specifying what additional prerequisites they expect.
+List of required python packages and their versions can be found in
+requirements.txt (can be installed with `pip3 install -r requirements.txt`).
### Network Setup
import subprocess
import tempfile
import time
+import sys
import pytest
# Silence warnings caused by passing a pytest fixture to another fixture.
# pylint: disable=redefined-outer-name
+if sys.version_info[1] < 10:
+ raise RuntimeError("Python 3.10 or newer is required to run system tests.")
isctest.log.init_conftest_logger()
isctest.log.avoid_duplicated_logs()
assert all(res.outcome == "passed" for res in test_results.values())
return "passed"
- def unlink(path):
- try:
- path.unlink() # missing_ok=True isn't available on Python 3.6
- except FileNotFoundError:
- pass
-
def check_artifacts(source_dir, run_dir):
def check_artifacts_recursive(dcmp):
def artifact_expected(path, expected):
# Create a convenience symlink with a stable and predictable name
module_name = SYMLINK_REPLACEMENT_RE.sub(r"\1", str(request.node.path))
symlink_dst = system_test_root / module_name
- unlink(symlink_dst)
+ symlink_dst.unlink(missing_ok=True)
symlink_dst.symlink_to(os.path.relpath(testdir, start=system_test_root))
isctest.log.init_module_logger(system_test_name, testdir)
isctest.log.deinit_module_logger()
if not keep:
shutil.rmtree(testdir)
- unlink(symlink_dst)
+ symlink_dst.unlink(missing_ok=True)
@pytest.fixture(scope="module")