"""Validate the dashboard `constants` module exposes the post-consolidation paths.""" from __future__ import annotations import sys from pathlib import Path import pytest PROJECT_ROOT = Path(__file__).resolve().parents[1] DASH = PROJECT_ROOT / "dashboard" # Make dashboard/ importable (same trick api.py does at runtime) if str(DASH) not in sys.path: sys.path.insert(0, str(DASH)) @pytest.fixture(scope="module") def constants(): # Imported as a module, not via `from dashboard import constants`, # because handlers use bare `import constants`. import constants as _c # type: ignore return _c def test_base_dir_is_echo_core(constants): assert constants.BASE_DIR == PROJECT_ROOT assert constants.BASE_DIR.name == "echo-core" def test_echo_core_dir_equals_base_dir(constants): """Post-consolidation: ECHO_CORE_DIR and BASE_DIR point at the same place.""" assert constants.ECHO_CORE_DIR == constants.BASE_DIR def test_git_workspace_is_echo_core(constants): """Legacy clawd workspace must be gone.""" assert constants.GIT_WORKSPACE == constants.BASE_DIR assert "clawd" not in str(constants.GIT_WORKSPACE) def test_allowed_workspaces_do_not_include_clawd(constants): for w in constants.ALLOWED_WORKSPACES: assert "clawd" not in str(w), f"clawd leaked into ALLOWED_WORKSPACES: {w}" def test_allowed_workspaces_include_echo_core_and_workspace(constants): allowed = {str(p) for p in constants.ALLOWED_WORKSPACES} assert str(constants.BASE_DIR) in allowed assert str(constants.WORKSPACE_DIR) in allowed def test_venv_python_is_dot_venv(constants): """The dashboard must spawn the .venv python (not legacy `venv/`).""" assert constants.VENV_PYTHON == constants.BASE_DIR / ".venv" / "bin" / "python3" assert ".venv" in str(constants.VENV_PYTHON) def test_notes_dir_points_at_in_repo_memory(constants): """memory/ lives inside echo-core post-consolidation.""" assert constants.NOTES_DIR == constants.BASE_DIR / "memory" / "kb" / "youtube" def test_eco_services_list(constants): assert "echo-core" in constants.ECO_SERVICES assert "echo-whatsapp-bridge" in constants.ECO_SERVICES assert "echo-taskboard" in constants.ECO_SERVICES def test_echo_log_and_sessions_paths(constants): assert constants.ECHO_LOG_FILE == constants.BASE_DIR / "logs" / "echo-core.log" assert constants.ECHO_SESSIONS_FILE == constants.BASE_DIR / "sessions" / "active.json" def test_habits_file_is_inside_dashboard(constants): assert constants.HABITS_FILE == constants.KANBAN_DIR / "habits.json" assert constants.KANBAN_DIR == constants.BASE_DIR / "dashboard"