auto-sync: 2026-06-05 18:41:47
This commit is contained in:
@@ -5,8 +5,7 @@
|
|||||||
- T2: token 估算 + 预算告警
|
- T2: token 估算 + 预算告警
|
||||||
- T3: 缺失组件降级
|
- T3: 缺失组件降级
|
||||||
- T4: build_for_task 便捷方法
|
- T4: build_for_task 便捷方法
|
||||||
- T5: _read_skill fallback (skipped — removed in API refactor)
|
|
||||||
- T6: ROLE_SKILL_MAP 覆盖 (skipped — removed in API refactor)
|
|
||||||
"""
|
"""
|
||||||
|
|
||||||
import pytest
|
import pytest
|
||||||
@@ -141,47 +140,4 @@ class TestBuildForTask:
|
|||||||
assert "T" in b
|
assert "T" in b
|
||||||
|
|
||||||
|
|
||||||
# ---------------------------------------------------------------------------
|
|
||||||
# T5: _read_skill fallback (removed in API refactor)
|
|
||||||
# ---------------------------------------------------------------------------
|
|
||||||
|
|
||||||
@pytest.mark.skip(reason="_read_skill removed in API refactor")
|
|
||||||
class TestReadSkillFallback:
|
|
||||||
def test_missing_skill_file_returns_empty(self, builder):
|
|
||||||
"""Skill 文件不存在时返回空字符串,不抛异常"""
|
|
||||||
result = builder._read_skill("nonexistent-skill-xyz")
|
|
||||||
assert result == ""
|
|
||||||
|
|
||||||
def test_existing_skill_file_read(self, builder):
|
|
||||||
"""能读取实际存在的 Skill 文件"""
|
|
||||||
result = builder._read_skill("blackboard-executor")
|
|
||||||
assert "执行" in result or "executor" in result.lower()
|
|
||||||
|
|
||||||
|
|
||||||
# ---------------------------------------------------------------------------
|
|
||||||
# T6: ROLE_SKILL_MAP 覆盖 (removed in API refactor)
|
|
||||||
# ---------------------------------------------------------------------------
|
|
||||||
|
|
||||||
@pytest.mark.skip(reason="ROLE_SKILL_MAP removed in API refactor")
|
|
||||||
class TestRoleSkillMap:
|
|
||||||
def test_all_roles_mapped(self):
|
|
||||||
assert set(BootstrapBuilder.ROLE_SKILL_MAP.keys()) == {
|
|
||||||
"executor", "reviewer", "reviewer-simayi",
|
|
||||||
"reviewer-pangtong", "planner", "claim",
|
|
||||||
}
|
|
||||||
|
|
||||||
def test_unknown_role_warns(self, builder):
|
|
||||||
"""未映射的 role 输出 warning"""
|
|
||||||
import logging
|
|
||||||
with patch("src.daemon.bootstrap.logger") as mock_logger:
|
|
||||||
builder.build(task={"title": "T"}, role="unknown_role")
|
|
||||||
mock_logger.warning.assert_called_with(
|
|
||||||
"No skill mapping for role: %s", "unknown_role"
|
|
||||||
)
|
|
||||||
|
|
||||||
def test_discussion_role_no_warning(self, builder, caplog):
|
|
||||||
"""discussion 角色不应触发 warning"""
|
|
||||||
import logging
|
|
||||||
with caplog.at_level(logging.WARNING, logger="moziplus-v2.bootstrap"):
|
|
||||||
builder.build(task={"title": "T"}, role="discussion")
|
|
||||||
assert "No skill mapping" not in caplog.text
|
|
||||||
|
|||||||
Reference in New Issue
Block a user