mirror of
https://github.com/krkn-chaos/krkn.git
synced 2026-04-15 06:57:28 +00:00
* feat: add pytest-based CI test framework v2 with ephemeral namespace isolation Signed-off-by: ddjain <darjain@redhat.com> * feat(ci): add tests_v2 pytest functional test framework Signed-off-by: ddjain <darjain@redhat.com> Co-authored-by: Cursor <cursoragent@cursor.com> * feat: improve naming convention Signed-off-by: ddjain <darjain@redhat.com> * improve local setup script. Signed-off-by: ddjain <darjain@redhat.com> * added CI job for v2 test Signed-off-by: ddjain <darjain@redhat.com> * disabled broken test Signed-off-by: ddjain <darjain@redhat.com> * improved CI pipeline execution time Signed-off-by: ddjain <darjain@redhat.com> * chore: remove unwanted/generated files from PR Signed-off-by: ddjain <darjain@redhat.com> * clean up gitignore file Signed-off-by: ddjain <darjain@redhat.com> * fix copilot comments Signed-off-by: ddjain <darjain@redhat.com> * fixed copilot suggestion Signed-off-by: ddjain <darjain@redhat.com> * uncommented out test upload stage Signed-off-by: ddjain <darjain@redhat.com> * exclude CI/tests_v2 from test coverage reporting Signed-off-by: ddjain <darjain@redhat.com> * uploading style.css to fix broken report artifacts Signed-off-by: ddjain <darjain@redhat.com> * added openshift supported labels in namespace creatation api Signed-off-by: ddjain <darjain@redhat.com> --------- Signed-off-by: ddjain <darjain@redhat.com> Co-authored-by: Cursor <cursoragent@cursor.com>
68 lines
1.9 KiB
Python
68 lines
1.9 KiB
Python
"""
|
|
Shared fixtures for pytest functional tests (CI/tests_v2).
|
|
Tests must be run from the repository root so run_kraken.py and config paths resolve.
|
|
"""
|
|
|
|
import logging
|
|
from pathlib import Path
|
|
|
|
import pytest
|
|
|
|
|
|
def pytest_addoption(parser):
|
|
parser.addoption(
|
|
"--keep-ns-on-fail",
|
|
action="store_true",
|
|
default=False,
|
|
help="Don't delete test namespaces on failure (for debugging)",
|
|
)
|
|
parser.addoption(
|
|
"--require-kind",
|
|
action="store_true",
|
|
default=False,
|
|
help="Skip tests unless current context is a known dev cluster (kind, minikube)",
|
|
)
|
|
|
|
|
|
@pytest.hookimpl(tryfirst=True, hookwrapper=True)
|
|
def pytest_runtest_makereport(item, call):
|
|
outcome = yield
|
|
rep = outcome.get_result()
|
|
setattr(item, f"rep_{rep.when}", rep)
|
|
|
|
|
|
def _repo_root() -> Path:
|
|
"""Repository root (directory containing run_kraken.py and CI/)."""
|
|
return Path(__file__).resolve().parent.parent.parent
|
|
|
|
|
|
@pytest.fixture(scope="session")
|
|
def repo_root():
|
|
return _repo_root()
|
|
|
|
|
|
@pytest.fixture(scope="session", autouse=True)
|
|
def _configure_logging():
|
|
"""Set log format with timestamps for test runs."""
|
|
logging.basicConfig(
|
|
format="%(asctime)s %(levelname)s [%(name)s] %(message)s",
|
|
datefmt="%Y-%m-%d %H:%M:%S",
|
|
level=logging.INFO,
|
|
)
|
|
|
|
|
|
# Re-export fixtures from lib modules so pytest discovers them
|
|
from lib.deploy import deploy_workload, wait_for_pods_running # noqa: E402, F401
|
|
from lib.kraken import build_config, run_kraken, run_kraken_background # noqa: E402, F401
|
|
from lib.k8s import ( # noqa: E402, F401
|
|
_kube_config_loaded,
|
|
_log_cluster_context,
|
|
k8s_apps,
|
|
k8s_client,
|
|
k8s_core,
|
|
k8s_networking,
|
|
kubectl,
|
|
)
|
|
from lib.namespace import _cleanup_stale_namespaces, test_namespace # noqa: E402, F401
|
|
from lib.preflight import _preflight_checks # noqa: E402, F401
|