from pathlib import Path from nanobot.config.paths import ( get_bridge_install_dir, get_cli_history_path, get_cron_dir, get_data_dir, get_legacy_sessions_dir, get_logs_dir, get_media_dir, get_runtime_subdir, get_workspace_path, ) def test_runtime_dirs_follow_config_path(monkeypatch, tmp_path: Path) -> None: config_file = tmp_path / "instance-a" / "config.json" monkeypatch.setattr("nanobot.config.paths.get_config_path", lambda: config_file) assert get_data_dir() == config_file.parent assert get_runtime_subdir("cron") == config_file.parent / "cron" assert get_cron_dir() == config_file.parent / "cron" assert get_logs_dir() == config_file.parent / "logs" def test_media_dir_supports_channel_namespace(monkeypatch, tmp_path: Path) -> None: config_file = tmp_path / "instance-b" / "config.json" monkeypatch.setattr("nanobot.config.paths.get_config_path", lambda: config_file) assert get_media_dir() == config_file.parent / "media" assert get_media_dir("telegram") == config_file.parent / "media" / "telegram" def test_shared_and_legacy_paths_remain_global() -> None: assert get_cli_history_path() == Path.home() / ".nanobot" / "history" / "cli_history" assert get_bridge_install_dir() == Path.home() / ".nanobot" / "bridge" assert get_legacy_sessions_dir() == Path.home() / ".nanobot" / "sessions" def test_workspace_path_is_explicitly_resolved() -> None: assert get_workspace_path() == Path.home() / ".nanobot" / "workspace" assert get_workspace_path("~/custom-workspace") == Path.home() / "custom-workspace"