mod common;
use common::spawn_and_wait_for;
#[test]
fn client_runner_logs_exit_reason_on_shutdown() {
let tmp = tempfile::tempdir().expect("create temp dir for sandbox");
let (stdout, stderr) = spawn_and_wait_for("Interactive mode started", &["-d"], tmp.path());
let _dump = common::dump_test_output("supervisor_exit_reason", &stdout, &stderr);
assert!(
stdout.contains("reason="),
"ClientRunner should log exit_reason during shutdown.\nstdout:\n{stdout}\nstderr:\n{stderr}"
);
}
#[test]
fn clean_shutdown_after_veto() {
let tmp = tempfile::tempdir().expect("create temp dir for sandbox");
let (stdout, stderr) = spawn_and_wait_for("[AgentMgr] Ready", &["-d"], tmp.path());
let _dump = common::dump_test_output("supervisor_clean_shutdown", &stdout, &stderr);
assert!(
stdout.contains("Shutting down"),
"Engine should log shutdown completion.\nstdout:\n{stdout}\nstderr:\n{stderr}"
);
assert!(
stdout.contains("agent_mgr shutdown"),
"agent_mgr should execute shutdown callback.\nstdout:\n{stdout}\nstderr:\n{stderr}"
);
}
#[test]
fn supervisor_managed_runners_spawned() {
let tmp = tempfile::tempdir().expect("create temp dir for sandbox");
let (stdout, stderr) = spawn_and_wait_for(
"[AgentMgr] Ready (backend: builtin::concierge, delegate: ok",
&["-d"],
tmp.path(),
);
let _dump = common::dump_test_output("supervisor_managed_runners", &stdout, &stderr);
assert!(
stdout.contains("spawned concierge agent"),
"Concierge should be spawned.\nstdout:\n{stdout}"
);
assert!(
stdout.contains("spawned delegate-worker agent"),
"Delegate-worker should be spawned.\nstdout:\n{stdout}"
);
assert!(
stdout.contains("delegate: ok"),
"Ready message should confirm delegate-worker is running.\nstdout:\n{stdout}"
);
}
#[test]
fn channel_runner_stop_log_does_not_contain_reason() {
let tmp = tempfile::tempdir().expect("create temp dir for sandbox");
let (stdout, stderr) = spawn_and_wait_for("Interactive mode started", &["-d"], tmp.path());
let _dump = common::dump_test_output("supervisor_channel_runner", &stdout, &stderr);
for line in stdout.lines() {
if line.contains("ChannelRunner stopped") {
assert!(
!line.contains("reason="),
"Base ChannelRunner should NOT log exit_reason.\nLine: {line}"
);
}
}
}