test_client_root_task_spec.py 1.2 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344
  1. import pytest
  2. import agent.client as client_module
  3. @pytest.mark.asyncio
  4. async def test_invoke_agent_forwards_root_task_spec_only_to_local_runner(monkeypatch):
  5. captured = {}
  6. async def fake_local(**kwargs):
  7. captured.update(kwargs)
  8. return {"mode": "local", "status": "completed"}
  9. monkeypatch.setattr(client_module, "_run_local_agent", fake_local)
  10. root_task_spec = {
  11. "objective": "Complete the mission",
  12. "acceptance_criteria": [
  13. {"criterion_id": "done", "description": "Mission is complete"}
  14. ],
  15. }
  16. result = await client_module.invoke_agent(
  17. agent_type="planner",
  18. task="start",
  19. project_root="/project",
  20. root_task_spec=root_task_spec,
  21. )
  22. assert result["status"] == "completed"
  23. assert captured["root_task_spec"] is root_task_spec
  24. @pytest.mark.asyncio
  25. async def test_invoke_agent_rejects_remote_root_task_spec():
  26. result = await client_module.invoke_agent(
  27. agent_type="remote_planner",
  28. task="start",
  29. root_task_spec={"objective": "must stay local"},
  30. )
  31. assert result["mode"] == "remote"
  32. assert result["status"] == "failed"
  33. assert "root_task_spec" in result["error"]
  34. assert "本地" in result["error"]