feat(worktree): onboard creator by default in worktree_prepare.sh (Issue #68)
This commit is contained in:
1 parent
3fd2416a30
commit
c0e9f5c8a5
5 files changed
+77
-10
No files matched your search
@@ -23,6 +23,7 @@ if str(SKILLS) not in sys.path:
|
||||
|
||||
from lib_py.agents.base import POST_DISCOVERED # noqa: E402
|
||||
from lib_py.agents.registry import get_adapter # noqa: E402
|
||||
from test_issue21_phase2_loop_a import _prepare, _rows, _wt, ctl # noqa: E402,F401
|
||||
from test_issue63_same_cwd_ids import _mock_herdr_agent, _read_rows, _row, _write_rows # noqa: E402
|
||||
|
||||
ALL_AGENTS = ("claude", "agy", "hermes", "grok", "opencode", "codex")
|
||||
@@ -180,3 +181,68 @@ def test_no_onboard_warning_precedes_a_later_refusal(mam_sandbox, mock_herdr, mo
|
||||
finally:
|
||||
holder.kill()
|
||||
holder.wait()
|
||||
|
||||
|
||||
@pytest.mark.parametrize(
|
||||
"opts,expect_onboard",
|
||||
[
|
||||
([], True),
|
||||
(["--onboard"], True),
|
||||
(["--no-onboard"], False),
|
||||
(["--no-onboard", "--onboard"], True),
|
||||
],
|
||||
)
|
||||
def test_prepare_forwards_onboarding_choice(ctl, opts, expect_onboard):
|
||||
main = ctl
|
||||
args_file = main / "captured_create_args.txt"
|
||||
stub = main / ".agents" / "skills" / "multi-agent-mux-create" / "scripts" / "create_session.sh"
|
||||
stub.write_text(f'#!/usr/bin/env bash\nprintf "%s\\n" "$*" > "{args_file}"\nexit 0\n')
|
||||
wt = _wt(main, "fwd")
|
||||
try:
|
||||
res = _prepare(main, wt, "--creator-agent", "claude", *opts)
|
||||
assert res.returncode == 0, res.stdout + res.stderr
|
||||
tokens = args_file.read_text().split()
|
||||
if expect_onboard:
|
||||
assert "--onboard" in tokens, tokens
|
||||
assert "--no-onboard" not in tokens, tokens
|
||||
else:
|
||||
assert "--no-onboard" in tokens, tokens
|
||||
assert "--onboard" not in tokens, tokens
|
||||
finally:
|
||||
subprocess.run(["git", "worktree", "remove", "--force", str(wt)], cwd=str(main), capture_output=True)
|
||||
|
||||
|
||||
def test_prepare_onboards_by_default_end_to_end(ctl, mock_herdr, mock_agents):
|
||||
main = ctl
|
||||
wt = _wt(main, "onboard-def")
|
||||
try:
|
||||
res = _prepare(main, wt, "--creator-agent", "claude")
|
||||
assert res.returncode == 0, res.stdout + res.stderr
|
||||
(row,) = _rows(main)
|
||||
jid = row["delegate_job_id"]
|
||||
assert jid, row
|
||||
job_path = main / ".mam" / "jobs" / f"{jid}.json"
|
||||
assert job_path.is_file(), f"missing job record {job_path}"
|
||||
rec = json.loads(job_path.read_text())
|
||||
assert rec["status"] == "completed", rec
|
||||
assert f"onboarding completed: job {jid}" in res.stdout, res.stdout
|
||||
finally:
|
||||
subprocess.run(["git", "worktree", "remove", "--force", str(wt)], cwd=str(main), capture_output=True)
|
||||
|
||||
|
||||
def test_prepare_no_onboard_sends_none(ctl, mock_herdr, mock_agents):
|
||||
main = ctl
|
||||
wt = _wt(main, "no-onboard")
|
||||
try:
|
||||
res = _prepare(main, wt, "--creator-agent", "claude", "--no-onboard")
|
||||
assert res.returncode == 0, res.stdout + res.stderr
|
||||
(row,) = _rows(main)
|
||||
assert row["delegate_job_id"] is None, row
|
||||
jobs_dir = main / ".mam" / "jobs"
|
||||
if jobs_dir.is_dir():
|
||||
for jf in jobs_dir.glob("*.json"):
|
||||
rec = json.loads(jf.read_text())
|
||||
assert rec.get("agent_session") != f"herdr:{row['name']}", rec
|
||||
finally:
|
||||
subprocess.run(["git", "worktree", "remove", "--force", str(wt)], cwd=str(main), capture_output=True)
|
||||
|
||||
Reference in new issue
Block a user