"""Tests for system-prompt rendering (no model calls).""" from skill_eval_runner.agent import build_system_prompt from skill_eval_runner.config import ArtifactConfig, PromptsConfig def test_with_skill_injects_skill_and_tool_instructions() -> None: """The with_skill prompt embeds the skill text and the report-tool name.""" prompt = build_system_prompt( with_skill=True, skill_md="MY SKILL BODY", artifact=ArtifactConfig(tool_name="write_thing"), prompts=PromptsConfig(), ) assert "MY SKILL BODY" in prompt assert "write_thing" in prompt def test_without_skill_omits_skill_block() -> None: """The without_skill prompt does not embed skill text.""" prompt = build_system_prompt( with_skill=False, skill_md="SHOULD NOT APPEAR", artifact=ArtifactConfig(), prompts=PromptsConfig(), ) assert "SHOULD NOT APPEAR" not in prompt def test_final_message_mode_has_no_tool_instruction() -> None: """final_message mode tells the agent to answer in its final message.""" prompt = build_system_prompt( with_skill=True, skill_md="x", artifact=ArtifactConfig(mode="final_message"), prompts=PromptsConfig(), ) assert "final message" in prompt def test_skill_text_with_braces_is_safe() -> None: """Braces in skill text don't break templating (literal replacement).""" prompt = build_system_prompt( with_skill=True, skill_md="code: {if x} {y}", artifact=ArtifactConfig(), prompts=PromptsConfig(), ) assert "{if x} {y}" in prompt