Implement full E2E, integration, component, and unit tests, and resolve all leftover tmux-to-herdr issues in UI and core scripts
This commit is contained in:
@@ -0,0 +1,74 @@
|
||||
import subprocess
|
||||
import json
|
||||
import yaml
|
||||
|
||||
def test_create_session_dry_run(mam_sandbox, mock_herdr, mock_agents):
|
||||
"""
|
||||
Sanity test verifying that create_session.sh --dry-run parses inputs,
|
||||
invokes herdr's preflight checks, and exits successfully without side effects.
|
||||
"""
|
||||
tmp_path = mam_sandbox
|
||||
script_path = tmp_path / "skills" / "multi-agent-mux-create" / "scripts" / "create_session.sh"
|
||||
|
||||
cmd = [
|
||||
"bash", str(script_path),
|
||||
"--workspace", str(tmp_path),
|
||||
"--agent", "claude",
|
||||
"--role", "Creator",
|
||||
"--dry-run"
|
||||
]
|
||||
res = subprocess.run(cmd, capture_output=True, text=True)
|
||||
assert res.returncode == 0, f"Stdout: {res.stdout}\nStderr: {res.stderr}"
|
||||
assert "[dry-run] would provision isolation" in res.stdout
|
||||
assert "[dry-run] would spawn" in res.stdout
|
||||
|
||||
# Verify that mock herdr was called for checking session existence (which gets translated to agent get)
|
||||
with open(mock_herdr, 'r') as f:
|
||||
state = json.load(f)
|
||||
|
||||
calls = state.get("calls", [])
|
||||
assert any("agent" in call and "get" in call for call in calls), f"Calls: {calls}"
|
||||
|
||||
def test_create_session_full(mam_sandbox, mock_herdr, mock_agents):
|
||||
"""
|
||||
Sanity test verifying that a full create_session.sh run intercepts herdr calls,
|
||||
completes the TUI readiness check using mock responses, and serializes state
|
||||
correctly to the sandboxed agent-sessions.yaml registry.
|
||||
"""
|
||||
tmp_path = mam_sandbox
|
||||
script_path = tmp_path / "skills" / "multi-agent-mux-create" / "scripts" / "create_session.sh"
|
||||
|
||||
cmd = [
|
||||
"bash", str(script_path),
|
||||
"--workspace", str(tmp_path),
|
||||
"--agent", "claude",
|
||||
"--role", "Creator"
|
||||
]
|
||||
res = subprocess.run(cmd, capture_output=True, text=True)
|
||||
assert res.returncode == 0, f"Stdout: {res.stdout}\nStderr: {res.stderr}"
|
||||
|
||||
# 1. Verify mock herdr state file registers the agent session
|
||||
with open(mock_herdr, 'r') as f:
|
||||
state = json.load(f)
|
||||
|
||||
agents = state.get("agents", {})
|
||||
assert len(agents) == 1, "There should be exactly one registered agent in the mock herdr state."
|
||||
|
||||
session_name = list(agents.keys())[0]
|
||||
assert session_name.endswith("-creator-claude")
|
||||
assert agents[session_name]["status"] == "running"
|
||||
assert agents[session_name]["agent"] == "claude"
|
||||
|
||||
# 2. Verify that agent-sessions.yaml is successfully written
|
||||
yaml_path = tmp_path / ".mam" / "agent-sessions.yaml"
|
||||
assert yaml_path.exists(), "The agent-sessions.yaml configuration file was not created."
|
||||
|
||||
with open(yaml_path, 'r') as f:
|
||||
reg = yaml.safe_load(f)
|
||||
|
||||
sessions = reg.get("herdr_sessions", [])
|
||||
assert len(sessions) == 1
|
||||
assert sessions[0]["name"] == session_name
|
||||
assert sessions[0]["status"] == "running"
|
||||
assert sessions[0]["role"] == "Creator"
|
||||
assert sessions[0]["isolation"]["uuid"] is not None
|
||||
Reference in New Issue
Block a user