ci: execute tagged module pytest suites
This commit is contained in:
@@ -1,8 +1,10 @@
|
||||
from __future__ import annotations
|
||||
|
||||
import os
|
||||
import tempfile
|
||||
import unittest
|
||||
from pathlib import Path
|
||||
from unittest.mock import patch
|
||||
|
||||
from tools.checks.release_integration import (
|
||||
SOURCE_COUPLED_CORE_TESTS,
|
||||
@@ -10,6 +12,7 @@ from tools.checks.release_integration import (
|
||||
artifact_contract_issues,
|
||||
filter_test_suite,
|
||||
release_package_names,
|
||||
run_module_release_tests,
|
||||
)
|
||||
|
||||
|
||||
@@ -89,8 +92,43 @@ class ReleaseIntegrationTests(unittest.TestCase):
|
||||
|
||||
self.assertLess(artifact_check, core_tests)
|
||||
self.assertLess(core_tests, module_tests)
|
||||
self.assertNotIn("unittest discover", script)
|
||||
self.assertNotIn('"$PYTHON" -m unittest \\\n tests.test_module_system', script)
|
||||
|
||||
def test_tagged_module_runner_executes_pytest_functions_from_module_root(self) -> None:
|
||||
with tempfile.TemporaryDirectory(prefix="govoplan-release-module-tests-") as temp_dir:
|
||||
module_root = Path(temp_dir)
|
||||
tests_root = module_root / "tests"
|
||||
tests_root.mkdir()
|
||||
marker = module_root / "pytest-function-ran"
|
||||
(tests_root / "test_probe.py").write_text(
|
||||
"""from pathlib import Path
|
||||
import os
|
||||
|
||||
|
||||
def test_pytest_style_function():
|
||||
expected_root = Path(os.environ[\"GOVOPLAN_TEST_MODULE_ROOT\"])
|
||||
assert Path.cwd() == expected_root
|
||||
Path(os.environ[\"GOVOPLAN_TEST_MARKER\"]).write_text(\"ran\", encoding=\"utf-8\")
|
||||
""",
|
||||
encoding="utf-8",
|
||||
)
|
||||
with patch.dict(
|
||||
os.environ,
|
||||
{
|
||||
"GOVOPLAN_TEST_MODULE_ROOT": str(module_root),
|
||||
"GOVOPLAN_TEST_MARKER": str(marker),
|
||||
},
|
||||
):
|
||||
status = run_module_release_tests(module_root)
|
||||
|
||||
self.assertEqual(status, 0)
|
||||
self.assertEqual(marker.read_text(encoding="utf-8"), "ran")
|
||||
|
||||
def test_tagged_module_runner_skips_missing_test_tree(self) -> None:
|
||||
with tempfile.TemporaryDirectory(prefix="govoplan-release-module-tests-") as temp_dir:
|
||||
self.assertEqual(run_module_release_tests(Path(temp_dir)), 0)
|
||||
|
||||
def test_module_matrix_uses_artifact_aware_core_suite(self) -> None:
|
||||
meta_root = Path(__file__).resolve().parents[1]
|
||||
script = (meta_root / "tools" / "checks" / "check-module-matrix.sh").read_text(encoding="utf-8")
|
||||
|
||||
Reference in New Issue
Block a user