Files
odysseus/tests/test_cookbook_dependency_completion_regression.py
hawktuahs 3d8c364689 [Bash] Fix Windows cookbook background tasks (#676)
* Fix Windows cookbook background tasks

* Add Windows Cookbook reliability follow-ups
2026-06-04 04:30:01 +01:00

52 lines
1.9 KiB
Python

from pathlib import Path
ROOT = Path(__file__).resolve().parents[1]
def _read(rel_path: str) -> str:
return (ROOT / rel_path).read_text(encoding="utf-8")
def test_backend_status_treats_download_exit_zero_as_completed():
source = _read("routes/cookbook_routes.py")
assert "exit_match = re.search(r\"=== process exited with code\\s+(-?\\d+)\"" in source
assert "elif has_exit and task_type == \"download\":" in source
assert "status = \"completed\" if exit_code == 0 else \"error\"" in source
def test_background_status_poll_reconciles_into_local_tasks():
source = _read("static/js/cookbookRunning.js")
assert "const statusById = new Map(tasks.map(t => [t.session_id, t]));" in source
assert "const nextStatus = live.status === 'completed'" in source
assert "? 'done'" in source
assert ": (live.status === 'error'" in source
assert "? 'error'" in source
assert "_saveTasks(localTasks);" in source
assert "completedDeps.forEach(t => _refreshDepsAfterInstall(t));" in source
def test_local_windows_session_commands_use_local_powershell_log_dir():
source = _read("static/js/cookbookRunning.js")
assert "const host = task.remoteHost;" in source
assert "host ? '$env:TEMP\\\\odysseus-sessions' : '$env:TEMP\\\\odysseus-tmux'" in source
assert "return host ? `ssh ${pf}${host}" in source
assert ": `powershell -Command \"${ps}\"`;" in source
def test_dependency_install_payload_keeps_env_path_for_refresh():
source = _read("static/js/cookbook.js")
assert "env_path: _envState.envPath || ''" in source
def test_local_dependency_probe_refreshes_user_site_visibility():
source = _read("routes/shell_routes.py")
assert "importlib.invalidate_caches()" in source
assert "user_site = site.getusersitepackages()" in source
assert "if user_site and os.path.isdir(user_site) and user_site not in sys.path:" in source