ForcePilot/backend/test/unit/backends/test_sandbox_provisioner_config.py
Wenjie Zhang b488e48d8e refactor: Benchmark 弹窗重构 + 测试适配 + 文档更新
- 重构 BenchmarkGenerateModal/BenchmarkUploadModal 组件
- 更新测试文件适配架构变更(apikey、sandbox、用户环境)
- 更新 roadmap.md 记录本次修改
2026-05-26 17:40:17 +08:00

64 lines
1.8 KiB
Python

from __future__ import annotations
import importlib.util
import sys
from pathlib import Path
MODULE_NAME = "sandbox_provisioner_app_for_test"
def _find_module_path() -> Path:
current = Path(__file__).resolve()
for parent in current.parents:
candidate = parent / "docker" / "sandbox_provisioner" / "app.py"
if candidate.exists():
return candidate
raise FileNotFoundError("docker/sandbox_provisioner/app.py not found from test path")
MODULE_PATH = _find_module_path()
def _load_module():
existing = sys.modules.get(MODULE_NAME)
if existing is not None:
return existing
spec = importlib.util.spec_from_file_location(MODULE_NAME, MODULE_PATH)
assert spec is not None
assert spec.loader is not None
module = importlib.util.module_from_spec(spec)
sys.modules[MODULE_NAME] = module
spec.loader.exec_module(module)
return module
def test_canonical_backend_name(monkeypatch):
monkeypatch.setenv("PROVISIONER_BACKEND", "memory")
module = _load_module()
assert module.canonical_backend_name("docker") == "docker"
assert module.canonical_backend_name("kubernetes") == "kubernetes"
def test_merged_sandbox_env_user_values_override_global(monkeypatch):
monkeypatch.setenv("PROVISIONER_BACKEND", "memory")
module = _load_module()
assert module.merged_sandbox_env(
{"SHARED": "global", "GLOBAL_ONLY": "value"},
{"SHARED": "user", "USER_ONLY": "value"},
) == {
"SHARED": "user",
"GLOBAL_ONLY": "value",
"USER_ONLY": "value",
}
def test_normalize_env_converts_values_to_strings(monkeypatch):
monkeypatch.setenv("PROVISIONER_BACKEND", "memory")
module = _load_module()
assert module.normalize_env({"A": 1, "B": None, "": "ignored"}) == {"A": "1", "B": ""}