wip: fixing more path resolution in tests
This commit is contained in:
@@ -54,12 +54,13 @@ Response = false
|
|||||||
"Tool Calls" = false
|
"Tool Calls" = false
|
||||||
Theme = true
|
Theme = true
|
||||||
"Log Management" = true
|
"Log Management" = true
|
||||||
|
Diagnostics = false
|
||||||
|
|
||||||
[theme]
|
[theme]
|
||||||
palette = "Nord Dark"
|
palette = "Nord Dark"
|
||||||
font_path = "C:/projects/manual_slop/assets/fonts/Inter-Regular.ttf"
|
font_path = "C:/projects/manual_slop/assets/fonts/Inter-Regular.ttf"
|
||||||
font_size = 14.0
|
font_size = 14.0
|
||||||
scale = 1.0
|
scale = 1.2000000476837158
|
||||||
transparency = 1.0
|
transparency = 1.0
|
||||||
child_transparency = 1.0
|
child_transparency = 1.0
|
||||||
|
|
||||||
|
|||||||
@@ -180,7 +180,8 @@ class AppController:
|
|||||||
"cache_read_input_tokens": 0,
|
"cache_read_input_tokens": 0,
|
||||||
"cache_creation_input_tokens": 0,
|
"cache_creation_input_tokens": 0,
|
||||||
"total_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]] = {
|
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},
|
"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()
|
threading.Thread(target=worker, daemon=True).start()
|
||||||
|
|
||||||
def _recalculate_session_usage(self) -> None:
|
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():
|
for entry in ai_client.get_comms_log():
|
||||||
if entry.get("kind") == "response" and "usage" in entry.get("payload", {}):
|
if entry.get("kind") == "response" and "usage" in entry.get("payload", {}):
|
||||||
u = entry["payload"]["usage"]
|
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:
|
def _refresh_api_metrics(self, payload: dict[str, Any], md_content: str | None = None) -> None:
|
||||||
if "latency" in payload:
|
if "latency" in payload:
|
||||||
self.session_usage["last_latency"] = payload["latency"]
|
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()
|
self._recalculate_session_usage()
|
||||||
if md_content is not None:
|
if md_content is not None:
|
||||||
stats = ai_client.get_token_stats(md_content)
|
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 / "manual_slop.toml").write_text("[project]\nname = 'TestProject'\n", encoding="utf-8")
|
||||||
(temp_workspace / "conductor" / "tracks").mkdir(parents=True, exist_ok=True)
|
(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
|
# Resolve absolute paths for shared resources
|
||||||
project_root = Path(os.path.abspath(os.path.join(os.path.dirname(__file__), "..")))
|
project_root = Path(os.path.abspath(os.path.join(os.path.dirname(__file__), "..")))
|
||||||
config_file = temp_workspace / "config.toml"
|
config_file = temp_workspace / "config.toml"
|
||||||
if not config_file.exists():
|
|
||||||
config_file = project_root / "config.toml"
|
|
||||||
cred_file = project_root / "credentials.toml"
|
cred_file = project_root / "credentials.toml"
|
||||||
mcp_file = project_root / "mcp_env.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={}), \
|
with patch('src.models.load_config', return_value={}), \
|
||||||
patch('src.performance_monitor.PerformanceMonitor'), \
|
patch('src.performance_monitor.PerformanceMonitor'), \
|
||||||
patch('src.session_logger.open_session'), \
|
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._prune_old_logs'), \
|
||||||
patch('src.app_controller.AppController._load_active_project'):
|
patch('src.app_controller.AppController._load_active_project'):
|
||||||
app = gui_2.App()
|
app = gui_2.App()
|
||||||
|
|||||||
@@ -47,6 +47,7 @@ class TestArchBoundaryPhase2(unittest.TestCase):
|
|||||||
with patch('src.models.load_config', return_value={}), \
|
with patch('src.models.load_config', return_value={}), \
|
||||||
patch('src.performance_monitor.PerformanceMonitor'), \
|
patch('src.performance_monitor.PerformanceMonitor'), \
|
||||||
patch('src.session_logger.open_session'), \
|
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._prune_old_logs'), \
|
||||||
patch('src.app_controller.AppController._init_ai_and_hooks'):
|
patch('src.app_controller.AppController._init_ai_and_hooks'):
|
||||||
controller = AppController()
|
controller = AppController()
|
||||||
@@ -69,6 +70,7 @@ class TestArchBoundaryPhase2(unittest.TestCase):
|
|||||||
with patch('src.models.load_config', return_value={}), \
|
with patch('src.models.load_config', return_value={}), \
|
||||||
patch('src.performance_monitor.PerformanceMonitor'), \
|
patch('src.performance_monitor.PerformanceMonitor'), \
|
||||||
patch('src.session_logger.open_session'), \
|
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._prune_old_logs'), \
|
||||||
patch('src.app_controller.AppController._init_ai_and_hooks'):
|
patch('src.app_controller.AppController._init_ai_and_hooks'):
|
||||||
controller = AppController()
|
controller = AppController()
|
||||||
|
|||||||
@@ -15,6 +15,7 @@ def mock_gui() -> App:
|
|||||||
patch('src.project_manager.migrate_from_legacy_config', return_value={}),
|
patch('src.project_manager.migrate_from_legacy_config', return_value={}),
|
||||||
patch('src.project_manager.save_project'),
|
patch('src.project_manager.save_project'),
|
||||||
patch('src.session_logger.open_session'),
|
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._init_ai_and_hooks'),
|
||||||
patch('src.app_controller.AppController._fetch_models')
|
patch('src.app_controller.AppController._fetch_models')
|
||||||
):
|
):
|
||||||
|
|||||||
@@ -13,6 +13,7 @@ class TestHeadlessAPI(unittest.TestCase):
|
|||||||
def setUp(self) -> None:
|
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': {}}}), \
|
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.open_session'), \
|
||||||
|
patch('src.session_logger.reset_session'), \
|
||||||
patch('src.ai_client.set_provider'), \
|
patch('src.ai_client.set_provider'), \
|
||||||
patch('src.performance_monitor.PerformanceMonitor'), \
|
patch('src.performance_monitor.PerformanceMonitor'), \
|
||||||
patch('src.session_logger.close_session'), \
|
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={}), \
|
with patch('src.models.load_config', return_value={}), \
|
||||||
patch('src.performance_monitor.PerformanceMonitor'), \
|
patch('src.performance_monitor.PerformanceMonitor'), \
|
||||||
patch('src.session_logger.open_session'), \
|
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._prune_old_logs'), \
|
||||||
patch('src.app_controller.AppController._init_ai_and_hooks'):
|
patch('src.app_controller.AppController._init_ai_and_hooks'):
|
||||||
app = App()
|
app = App()
|
||||||
@@ -25,6 +26,7 @@ def test_hooks_disabled_by_default() -> None:
|
|||||||
with patch('src.models.load_config', return_value={}), \
|
with patch('src.models.load_config', return_value={}), \
|
||||||
patch('src.performance_monitor.PerformanceMonitor'), \
|
patch('src.performance_monitor.PerformanceMonitor'), \
|
||||||
patch('src.session_logger.open_session'), \
|
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._prune_old_logs'), \
|
||||||
patch('src.app_controller.AppController._init_ai_and_hooks'):
|
patch('src.app_controller.AppController._init_ai_and_hooks'):
|
||||||
app = App()
|
app = App()
|
||||||
|
|||||||
@@ -34,7 +34,8 @@ history = []
|
|||||||
def app_instance(mock_config: Path, mock_project: Path, monkeypatch: pytest.MonkeyPatch) -> App:
|
def app_instance(mock_config: Path, mock_project: Path, monkeypatch: pytest.MonkeyPatch) -> App:
|
||||||
monkeypatch.setattr("src.models.CONFIG_PATH", mock_config)
|
monkeypatch.setattr("src.models.CONFIG_PATH", mock_config)
|
||||||
with patch("src.project_manager.load_project") as mock_load, \
|
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 = {
|
mock_load.return_value = {
|
||||||
"project": {"name": "test"},
|
"project": {"name": "test"},
|
||||||
"discussion": {"roles": ["User", "AI"], "active": "main", "discussions": {"main": {"history": []}}},
|
"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.gui_2.ai_client.list_models", return_value=["gpt-4", "claude-3"]),
|
||||||
patch("src.performance_monitor.PerformanceMonitor"),
|
patch("src.performance_monitor.PerformanceMonitor"),
|
||||||
patch("src.gui_2.api_hooks.HookServer"),
|
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()
|
app = App()
|
||||||
|
|||||||
@@ -16,6 +16,7 @@ def controller():
|
|||||||
patch('src.project_manager.migrate_from_legacy_config', return_value={}),
|
patch('src.project_manager.migrate_from_legacy_config', return_value={}),
|
||||||
patch('src.project_manager.save_project'),
|
patch('src.project_manager.save_project'),
|
||||||
patch('src.session_logger.open_session'),
|
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._init_ai_and_hooks'),
|
||||||
patch('src.app_controller.AppController._fetch_models')
|
patch('src.app_controller.AppController._fetch_models')
|
||||||
):
|
):
|
||||||
|
|||||||
Reference in New Issue
Block a user