tests/docs: unique-name driver loading; moving-path lifecycle and settings notes; VIV predeclare renamed

Tests load research drivers via importlib under unique module names
instead of a bare 'import run' (shared-process collision between the
Dütsch and VIV drivers). lifecycle.md qualifies immutable geometry and the
host-only get_flags for translating circles; supported_settings.md points to
the dense-only moving-circle feature; leontini_viv_predeclare.md is renamed
viv_re150_predeclare.md (Re 150 Kolahdouz/Qin case) with references updated.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
This commit is contained in:
ClaudeandClaude Opus 5.5 committed 2026-10-30 16:12:05 +00:00
1 parent 307468b671
commit 48ee0982c9
8 files changed
+47 -26

No files matched your search

+15 -6
View File
@@ -8,6 +8,20 @@ _spec = importlib.util.spec_from_file_location(
viv = importlib.util.module_from_spec(_spec)
_spec.loader.exec_module(viv)
def _load(rel, name):
"""Load a research driver module under a unique name (no bare ``import run``)."""
import sys
path = Path(__file__).resolve().parents[2] / rel
sys.path.insert(0, str(path.parent)) # for the driver's own sibling imports
try:
spec = importlib.util.spec_from_file_location(name, path)
mod = importlib.util.module_from_spec(spec)
spec.loader.exec_module(mod)
finally:
sys.path.remove(str(path.parent))
return mod
D, U = 40, 0.04
@@ -72,12 +86,7 @@ def test_seed_reset_discards_incomplete_cycle_and_proof():
def test_viv_config_passes_the_real_loader(tmp_path):
import json
import sys
sys.path.insert(0, str(Path(__file__).resolve().parents[2] / "research/viv_re150"))
try:
import run
finally:
sys.path.pop(0)
run = _load("research/viv_re150/run.py", "viv_run")
from CelerisLab.config import load_lbm_config
cfg_dict, nx, ny = run.config()
path = tmp_path / "config_lbm.json"