Skip to content

Commit 9fc4a34

Browse files
CopilotOhYee
andauthored
test: tighten sync-skills option validation coverage
Signed-off-by: GitHub <noreply@github.com> Co-authored-by: OhYee <13498329+OhYee@users.noreply.github.com>
1 parent 74726d3 commit 9fc4a34

2 files changed

Lines changed: 17 additions & 3 deletions

File tree

src/agentrun_cli/commands/sync_skills_cmd.py

Lines changed: 5 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -215,17 +215,18 @@ def sync_skills(
215215
):
216216
"""Sync platform skills to local AI tool skill directories."""
217217
if use_claude_code == use_codex:
218-
raise click.UsageError("Exactly one of --claude-code or --codex is required.")
218+
raise click.UsageError(
219+
"You must specify exactly one of --claude-code or --codex."
220+
)
219221
if user_scope == project_scope:
220-
raise click.UsageError("Exactly one of --user or --project is required.")
222+
raise click.UsageError("You must specify exactly one of --user or --project.")
221223

222224
ai_tool = "claude-code" if use_claude_code else "codex"
223225
scope = "user" if user_scope else "project"
224226
target_dir = _resolve_target_dir(ai_tool, scope)
225227
os.makedirs(target_dir, exist_ok=True)
226228

227229
profile, region = _ctx_cfg(ctx)
228-
cfg = build_sdk_config(profile_name=profile, region=region)
229230
all_skills = _list_platform_skills(profile, region)
230231
requested_workspaces = set(workspaces or [])
231232

@@ -262,6 +263,7 @@ def sync_skills(
262263

263264
downloaded = []
264265
updated = []
266+
cfg = build_sdk_config(profile_name=profile, region=region)
265267
from agentrun.tool import Tool
266268

267269
for name, remote_updated_at, local_exists in to_sync:

tests/unit/test_sync_skills_cmd.py

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -44,12 +44,24 @@ def test_requires_exactly_one_tool(self):
4444
assert result.exit_code != 0
4545
assert "--claude-code or --codex" in result.output
4646

47+
def test_rejects_both_tool_flags(self):
48+
runner = CliRunner()
49+
result = runner.invoke(sync_skills, ["--claude-code", "--codex", "--user"])
50+
assert result.exit_code != 0
51+
assert "--claude-code or --codex" in result.output
52+
4753
def test_requires_exactly_one_scope(self):
4854
runner = CliRunner()
4955
result = runner.invoke(sync_skills, ["--claude-code"])
5056
assert result.exit_code != 0
5157
assert "--user or --project" in result.output
5258

59+
def test_rejects_both_scope_flags(self):
60+
runner = CliRunner()
61+
result = runner.invoke(sync_skills, ["--claude-code", "--user", "--project"])
62+
assert result.exit_code != 0
63+
assert "--user or --project" in result.output
64+
5365

5466
class TestSyncSkillsCommand:
5567

0 commit comments

Comments
 (0)