mod common;
use common::serve::ServeChild;
use std::process::Command;
#[test]
fn run_over_rest_streams_output_and_propagates_exit_code() {
let serve = ServeChild::start();
let client_home = boxlite_test_utils::home::PerTestBoxHome::new();
let out = Command::new(env!("CARGO_BIN_EXE_boxlite"))
.arg("--home")
.arg(&client_home.path)
.arg("--url")
.arg(serve.url())
.args([
"run",
"--rm",
"alpine:latest",
"sh",
"-c",
"echo hello-over-rest; exit 7",
])
.output()
.expect("run --url");
let stdout = String::from_utf8_lossy(&out.stdout);
let stderr = String::from_utf8_lossy(&out.stderr);
assert!(
stdout.contains("hello-over-rest"),
"the main command's stdout must round-trip over REST — stdout={stdout:?} stderr={stderr:?}"
);
assert_eq!(
out.status.code(),
Some(7),
"the main command's exit code must propagate over REST — stderr={stderr:?}"
);
serve.wait_until_no_boxes();
}