wip: fixing more path resolution in tests
This commit is contained in:
@@ -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
|
||||
|
||||
|
||||
@@ -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)
|
||||
|
||||
@@ -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"
|
||||
|
||||
|
||||
@@ -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()
|
||||
|
||||
@@ -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()
|
||||
|
||||
@@ -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')
|
||||
):
|
||||
|
||||
@@ -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'), \
|
||||
|
||||
@@ -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()
|
||||
|
||||
@@ -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": []}}},
|
||||
|
||||
@@ -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()
|
||||
|
||||
@@ -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')
|
||||
):
|
||||
|
||||
Reference in New Issue
Block a user