From 8bc6eae101e234dfb48225aff38f1042874b2995 Mon Sep 17 00:00:00 2001 From: Ed_ Date: Thu, 12 Mar 2026 19:28:15 -0400 Subject: [PATCH] wip: fixing more path resolution in tests --- config.toml | 3 ++- src/app_controller.py | 7 +++++-- tests/conftest.py | 15 +++++++++++++-- tests/test_api_hook_extensions.py | 1 + tests/test_arch_boundary_phase2.py | 2 ++ tests/test_gui_events_v2.py | 1 + tests/test_headless_service.py | 1 + tests/test_hooks.py | 2 ++ tests/test_log_management_ui.py | 3 ++- tests/test_phase6_engine.py | 3 ++- tests/test_symbol_parsing.py | 1 + 11 files changed, 32 insertions(+), 7 deletions(-) diff --git a/config.toml b/config.toml index 7034d31..e4eed5e 100644 --- a/config.toml +++ b/config.toml @@ -54,12 +54,13 @@ Response = false "Tool Calls" = false Theme = true "Log Management" = true +Diagnostics = false [theme] palette = "Nord Dark" font_path = "C:/projects/manual_slop/assets/fonts/Inter-Regular.ttf" font_size = 14.0 -scale = 1.0 +scale = 1.2000000476837158 transparency = 1.0 child_transparency = 1.0 diff --git a/src/app_controller.py b/src/app_controller.py index 0a9ebd8..21733ff 100644 --- a/src/app_controller.py +++ b/src/app_controller.py @@ -180,7 +180,8 @@ class AppController: "cache_read_input_tokens": 0, "cache_creation_input_tokens": 0, "total_tokens": 0, - "last_latency": 0.0 + "last_latency": 0.0, + "percentage": 0.0 } self.mma_tier_usage: Dict[str, Dict[str, Any]] = { "Tier 1": {"input": 0, "output": 0, "provider": "gemini", "model": "gemini-3.1-pro-preview", "tool_preset": None}, @@ -2225,7 +2226,7 @@ class AppController: threading.Thread(target=worker, daemon=True).start() def _recalculate_session_usage(self) -> None: - usage = {"input_tokens": 0, "output_tokens": 0, "cache_read_input_tokens": 0, "cache_creation_input_tokens": 0, "total_tokens": 0, "last_latency": 0.0} + usage = {"input_tokens": 0, "output_tokens": 0, "cache_read_input_tokens": 0, "cache_creation_input_tokens": 0, "total_tokens": 0, "last_latency": 0.0, "percentage": self.session_usage.get("percentage", 0.0)} for entry in ai_client.get_comms_log(): if entry.get("kind") == "response" and "usage" in entry.get("payload", {}): u = entry["payload"]["usage"] @@ -2240,6 +2241,8 @@ class AppController: def _refresh_api_metrics(self, payload: dict[str, Any], md_content: str | None = None) -> None: if "latency" in payload: self.session_usage["last_latency"] = payload["latency"] + if "usage" in payload and "percentage" in payload["usage"]: + self.session_usage["percentage"] = payload["usage"]["percentage"] self._recalculate_session_usage() if md_content is not None: stats = ai_client.get_token_stats(md_content) diff --git a/tests/conftest.py b/tests/conftest.py index fb18689..f332b9e 100644 --- a/tests/conftest.py +++ b/tests/conftest.py @@ -203,11 +203,22 @@ def live_gui() -> Generator[tuple[subprocess.Popen, str], None, None]: (temp_workspace / "manual_slop.toml").write_text("[project]\nname = 'TestProject'\n", encoding="utf-8") (temp_workspace / "conductor" / "tracks").mkdir(parents=True, exist_ok=True) + # Create a local config.toml in temp_workspace + config_content = { + 'ai': {'provider': 'gemini', 'model': 'gemini-2.5-flash-lite'}, + 'projects': { + 'paths': [str((temp_workspace / 'manual_slop.toml').absolute())], + 'active': str((temp_workspace / 'manual_slop.toml').absolute()) + } + } + import tomli_w + with open(temp_workspace / 'config.toml', 'wb') as f: + tomli_w.dump(config_content, f) + # Resolve absolute paths for shared resources project_root = Path(os.path.abspath(os.path.join(os.path.dirname(__file__), ".."))) config_file = temp_workspace / "config.toml" - if not config_file.exists(): - config_file = project_root / "config.toml" + cred_file = project_root / "credentials.toml" mcp_file = project_root / "mcp_env.toml" diff --git a/tests/test_api_hook_extensions.py b/tests/test_api_hook_extensions.py index 722b9aa..1e4b012 100644 --- a/tests/test_api_hook_extensions.py +++ b/tests/test_api_hook_extensions.py @@ -36,6 +36,7 @@ def test_app_processes_new_actions() -> None: with patch('src.models.load_config', return_value={}), \ patch('src.performance_monitor.PerformanceMonitor'), \ patch('src.session_logger.open_session'), \ + patch('src.session_logger.reset_session'), \ patch('src.app_controller.AppController._prune_old_logs'), \ patch('src.app_controller.AppController._load_active_project'): app = gui_2.App() diff --git a/tests/test_arch_boundary_phase2.py b/tests/test_arch_boundary_phase2.py index ddebe1a..b5284f4 100644 --- a/tests/test_arch_boundary_phase2.py +++ b/tests/test_arch_boundary_phase2.py @@ -47,6 +47,7 @@ class TestArchBoundaryPhase2(unittest.TestCase): with patch('src.models.load_config', return_value={}), \ patch('src.performance_monitor.PerformanceMonitor'), \ patch('src.session_logger.open_session'), \ + patch('src.session_logger.reset_session'), \ patch('src.app_controller.AppController._prune_old_logs'), \ patch('src.app_controller.AppController._init_ai_and_hooks'): controller = AppController() @@ -69,6 +70,7 @@ class TestArchBoundaryPhase2(unittest.TestCase): with patch('src.models.load_config', return_value={}), \ patch('src.performance_monitor.PerformanceMonitor'), \ patch('src.session_logger.open_session'), \ + patch('src.session_logger.reset_session'), \ patch('src.app_controller.AppController._prune_old_logs'), \ patch('src.app_controller.AppController._init_ai_and_hooks'): controller = AppController() diff --git a/tests/test_gui_events_v2.py b/tests/test_gui_events_v2.py index 5c35412..b31062d 100644 --- a/tests/test_gui_events_v2.py +++ b/tests/test_gui_events_v2.py @@ -15,6 +15,7 @@ def mock_gui() -> App: patch('src.project_manager.migrate_from_legacy_config', return_value={}), patch('src.project_manager.save_project'), patch('src.session_logger.open_session'), + patch('src.session_logger.reset_session'), patch('src.app_controller.AppController._init_ai_and_hooks'), patch('src.app_controller.AppController._fetch_models') ): diff --git a/tests/test_headless_service.py b/tests/test_headless_service.py index c54d143..2ea99ed 100644 --- a/tests/test_headless_service.py +++ b/tests/test_headless_service.py @@ -13,6 +13,7 @@ class TestHeadlessAPI(unittest.TestCase): def setUp(self) -> None: with patch('src.models.load_config', return_value={'ai': {'provider': 'gemini', 'model': 'gemini-2.5-flash-lite'}, 'projects': {}, 'gui': {'show_windows': {}}}), \ patch('src.session_logger.open_session'), \ + patch('src.session_logger.reset_session'), \ patch('src.ai_client.set_provider'), \ patch('src.performance_monitor.PerformanceMonitor'), \ patch('src.session_logger.close_session'), \ diff --git a/tests/test_hooks.py b/tests/test_hooks.py index 2321f7c..0a387af 100644 --- a/tests/test_hooks.py +++ b/tests/test_hooks.py @@ -14,6 +14,7 @@ def test_hooks_enabled_via_cli(monkeypatch: pytest.MonkeyPatch) -> None: with patch('src.models.load_config', return_value={}), \ patch('src.performance_monitor.PerformanceMonitor'), \ patch('src.session_logger.open_session'), \ + patch('src.session_logger.reset_session'), \ patch('src.app_controller.AppController._prune_old_logs'), \ patch('src.app_controller.AppController._init_ai_and_hooks'): app = App() @@ -25,6 +26,7 @@ def test_hooks_disabled_by_default() -> None: with patch('src.models.load_config', return_value={}), \ patch('src.performance_monitor.PerformanceMonitor'), \ patch('src.session_logger.open_session'), \ + patch('src.session_logger.reset_session'), \ patch('src.app_controller.AppController._prune_old_logs'), \ patch('src.app_controller.AppController._init_ai_and_hooks'): app = App() diff --git a/tests/test_log_management_ui.py b/tests/test_log_management_ui.py index bb3385a..aef7ddf 100644 --- a/tests/test_log_management_ui.py +++ b/tests/test_log_management_ui.py @@ -34,7 +34,8 @@ history = [] def app_instance(mock_config: Path, mock_project: Path, monkeypatch: pytest.MonkeyPatch) -> App: monkeypatch.setattr("src.models.CONFIG_PATH", mock_config) with patch("src.project_manager.load_project") as mock_load, \ - patch("src.session_logger.open_session"): + patch("src.session_logger.open_session"), \ + patch("src.session_logger.reset_session"): mock_load.return_value = { "project": {"name": "test"}, "discussion": {"roles": ["User", "AI"], "active": "main", "discussions": {"main": {"history": []}}}, diff --git a/tests/test_phase6_engine.py b/tests/test_phase6_engine.py index d08e6d4..85d3906 100644 --- a/tests/test_phase6_engine.py +++ b/tests/test_phase6_engine.py @@ -53,7 +53,8 @@ def test_per_tier_model_persistence(): patch("src.gui_2.ai_client.list_models", return_value=["gpt-4", "claude-3"]), patch("src.performance_monitor.PerformanceMonitor"), patch("src.gui_2.api_hooks.HookServer"), - patch("src.gui_2.session_logger.open_session") + patch("src.gui_2.session_logger.open_session"), + patch("src.gui_2.session_logger.reset_session") ): app = App() diff --git a/tests/test_symbol_parsing.py b/tests/test_symbol_parsing.py index b0c1631..8635289 100644 --- a/tests/test_symbol_parsing.py +++ b/tests/test_symbol_parsing.py @@ -16,6 +16,7 @@ def controller(): patch('src.project_manager.migrate_from_legacy_config', return_value={}), patch('src.project_manager.save_project'), patch('src.session_logger.open_session'), + patch('src.session_logger.reset_session'), patch('src.app_controller.AppController._init_ai_and_hooks'), patch('src.app_controller.AppController._fetch_models') ):