mirror of
https://github.com/forcedotcom/afv-library.git
synced 2026-07-30 11:43:26 +08:00
101 lines
3.9 KiB
Python
101 lines
3.9 KiB
Python
"""Tests for the --data-dir / --cache-dir override mechanism.
|
|
|
|
Three things must be true after ``--data-dir <path>`` is parsed:
|
|
|
|
1. ``paths.DATA_ROOT`` points at the override.
|
|
2. ``config.DATA_ROOT`` points at the override (re-export).
|
|
3. ``main.DATA_ROOT`` points at the override (the local ``from config import
|
|
DATA_ROOT`` snapshot at module top).
|
|
|
|
If any of the three is stale, callers reading ``DATA_ROOT`` from that module
|
|
see the default path. ``main.py:2221`` writes ``str(DATA_ROOT)`` into the
|
|
``.emit_ctx.json`` file consumed by ``emit_result.py`` — getting that wrong
|
|
means the RESULT block points users at the wrong directory.
|
|
"""
|
|
from __future__ import annotations
|
|
|
|
from pathlib import Path
|
|
|
|
from . import _bootstrap # noqa: F401 — sys.path setup
|
|
|
|
import config # type: ignore
|
|
import main # type: ignore
|
|
from _shared import paths, runtime # type: ignore
|
|
|
|
|
|
def _reset_overrides() -> None:
|
|
"""Clear runtime overrides so the test starts from a known state."""
|
|
runtime.set_data_root_override(None)
|
|
runtime.set_cache_root_override(None)
|
|
# Re-resolve all three namespace levels back to defaults.
|
|
default_data = runtime.resolve_data_root("investigating-agentforce-architecture")
|
|
default_cache = runtime.resolve_cache_root("investigating-agentforce-architecture")
|
|
paths.DATA_ROOT = default_data
|
|
paths.CACHE_ROOT = default_cache
|
|
config.DATA_ROOT = default_data
|
|
config.CACHE_ROOT = default_cache
|
|
config.PROBE_CACHE_ROOT = default_cache / "_channel_probe"
|
|
main.DATA_ROOT = default_data
|
|
|
|
|
|
def test_default_paths_under_vibe() -> None:
|
|
"""No overrides → all 3 namespaces point at ~/.vibe/."""
|
|
_reset_overrides()
|
|
expected_data = Path.home() / ".vibe" / "data" / "investigating-agentforce-architecture"
|
|
expected_cache = Path.home() / ".vibe" / "cache" / "investigating-agentforce-architecture"
|
|
assert paths.DATA_ROOT == expected_data
|
|
assert config.DATA_ROOT == expected_data
|
|
assert main.DATA_ROOT == expected_data
|
|
assert paths.CACHE_ROOT == expected_cache
|
|
assert config.CACHE_ROOT == expected_cache
|
|
|
|
|
|
def test_data_dir_override_rebinds_three_namespaces(tmp_path: Path) -> None:
|
|
"""--data-dir /tmp/x → all 3 namespaces (paths, config, main) update."""
|
|
_reset_overrides()
|
|
override = tmp_path / "custom-data"
|
|
args = main.parse_args([
|
|
"--org-alias", "myorg",
|
|
"--agent", "MyAgent",
|
|
"--work-dir", str(tmp_path / "work"),
|
|
"--data-dir", str(override),
|
|
])
|
|
main._apply_path_overrides(args)
|
|
# All three namespace levels must equal the override path.
|
|
assert paths.DATA_ROOT == override, "paths.DATA_ROOT not rebound"
|
|
assert config.DATA_ROOT == override, "config.DATA_ROOT not rebound"
|
|
assert main.DATA_ROOT == override, "main.DATA_ROOT not rebound"
|
|
_reset_overrides()
|
|
|
|
|
|
def test_cache_dir_override_rebinds_paths_and_config(tmp_path: Path) -> None:
|
|
"""--cache-dir /tmp/y → paths.CACHE_ROOT, config.CACHE_ROOT, and PROBE_CACHE_ROOT update."""
|
|
_reset_overrides()
|
|
override = tmp_path / "custom-cache"
|
|
args = main.parse_args([
|
|
"--org-alias", "myorg",
|
|
"--agent", "MyAgent",
|
|
"--work-dir", str(tmp_path / "work"),
|
|
"--cache-dir", str(override),
|
|
])
|
|
main._apply_path_overrides(args)
|
|
assert paths.CACHE_ROOT == override
|
|
assert config.CACHE_ROOT == override
|
|
assert config.PROBE_CACHE_ROOT == override / "_channel_probe"
|
|
_reset_overrides()
|
|
|
|
|
|
def test_no_override_leaves_defaults_intact(tmp_path: Path) -> None:
|
|
"""Running with no override flags must not mutate anything."""
|
|
_reset_overrides()
|
|
expected_data = Path.home() / ".vibe" / "data" / "investigating-agentforce-architecture"
|
|
args = main.parse_args([
|
|
"--org-alias", "myorg",
|
|
"--agent", "MyAgent",
|
|
"--work-dir", str(tmp_path / "work"),
|
|
])
|
|
main._apply_path_overrides(args)
|
|
assert paths.DATA_ROOT == expected_data
|
|
assert config.DATA_ROOT == expected_data
|
|
assert main.DATA_ROOT == expected_data
|