From d7a2fff7e0023a32a238dfe8086ac6f34d1096b4 Mon Sep 17 00:00:00 2001 From: rayhpeng Date: Fri, 15 May 2026 16:52:11 +0800 Subject: [PATCH] fix(task): tolerate invalid default config in usage cache --- .../packages/harness/deerflow/tools/builtins/task_tool.py | 2 +- backend/tests/test_task_tool_core_logic.py | 5 +++-- 2 files changed, 4 insertions(+), 3 deletions(-) diff --git a/backend/packages/harness/deerflow/tools/builtins/task_tool.py b/backend/packages/harness/deerflow/tools/builtins/task_tool.py index cf9281ff4..e4e399d2a 100644 --- a/backend/packages/harness/deerflow/tools/builtins/task_tool.py +++ b/backend/packages/harness/deerflow/tools/builtins/task_tool.py @@ -35,7 +35,7 @@ def _token_usage_cache_enabled(app_config: "AppConfig | None") -> bool: if app_config is None: try: app_config = get_app_config() - except FileNotFoundError: + except (FileNotFoundError, ValueError): return False return bool(getattr(getattr(app_config, "token_usage", None), "enabled", False)) diff --git a/backend/tests/test_task_tool_core_logic.py b/backend/tests/test_task_tool_core_logic.py index 658968d65..9f23b8511 100644 --- a/backend/tests/test_task_tool_core_logic.py +++ b/backend/tests/test_task_tool_core_logic.py @@ -1214,11 +1214,12 @@ def test_terminal_event_usage_none_when_no_records(monkeypatch): assert completed[0]["usage"] is None -def test_subagent_usage_cache_is_skipped_when_config_file_is_missing(monkeypatch): +@pytest.mark.parametrize("error", [FileNotFoundError("missing config"), ValueError("invalid config")]) +def test_subagent_usage_cache_is_skipped_when_default_config_cannot_load(monkeypatch, error): monkeypatch.setattr( task_tool_module, "get_app_config", - MagicMock(side_effect=FileNotFoundError("missing config")), + MagicMock(side_effect=error), ) assert task_tool_module._token_usage_cache_enabled(None) is False