import os from pathlib import Path from investibook.scripts import eval as eval_script def test_bootstrap_local_runtime_loads_env_files_and_runtime_defaults(tmp_path, monkeypatch): backend_dir = tmp_path / "backend" backend_dir.mkdir() (backend_dir / ".env.local").write_text("LOCAL_ONLY=1\nSHARED=from_local\n", encoding="utf-8") (backend_dir / ".env").write_text("ENV_ONLY=1\nSHARED=from_env\n", encoding="utf-8") repo_dir = tmp_path monkeypatch.setattr(eval_script, "_script_paths", lambda: (backend_dir, repo_dir)) monkeypatch.delenv("LOCAL_ONLY", raising=False) monkeypatch.delenv("ENV_ONLY", raising=False) monkeypatch.delenv("SHARED", raising=False) monkeypatch.delenv("UV_CACHE_DIR", raising=False) monkeypatch.delenv("PYTHONPATH", raising=False) monkeypatch.setenv("PATH", "/usr/bin") eval_script.bootstrap_local_runtime() assert os.environ["LOCAL_ONLY"] == "1" assert os.environ["ENV_ONLY"] == "1" assert os.environ["SHARED"] == "from_local" assert os.environ["UV_CACHE_DIR"] == "/tmp/uv-cache" assert os.environ["PYTHONPATH"].split(os.pathsep)[0] == str(repo_dir / "backend") assert os.environ["PATH"].split(os.pathsep)[0] == str(Path.home() / ".local" / "bin")