#![cfg(feature = "itest-e2e")]
use std::path::{Path, PathBuf};
use std::process::Command;
fn fixture_root() -> PathBuf {
Path::new(env!("CARGO_MANIFEST_DIR")).join("../camel-integration-test/tests/fixtures/outbound")
}
#[test]
fn cli_runs_full_boot_scenario() {
let root = fixture_root();
let doc = root.join("bridge.test.yaml");
assert!(
doc.is_file(),
"fixture document must exist: {}",
doc.display()
);
let output = Command::new(env!("CARGO_BIN_EXE_camel"))
.arg("test")
.arg(&doc)
.current_dir(&root)
.output()
.expect("camel test must spawn"); let stdout = String::from_utf8_lossy(&output.stdout).into_owned();
let stderr = String::from_utf8_lossy(&output.stderr).into_owned();
assert!(
output.status.success(),
"a full-boot pass must exit 0\nstdout:\n{stdout}\nstderr:\n{stderr}"
);
assert!(
stdout.contains("[full]"),
"stdout:\n{stdout}\nstderr:\n{stderr}"
);
for row in [
"scenario[0] send",
"scenario[1] receive",
"scenario[6] validate",
] {
assert!(
stdout.contains(&format!("#{row}")),
"missing PASS row {row}\nstdout:\n{stdout}\nstderr:\n{stderr}"
);
assert!(
!stdout.contains(&format!("FAIL #{row}")),
"row {row} must not fail\nstdout:\n{stdout}\nstderr:\n{stderr}"
);
}
assert!(
stdout.contains("7 passed, 0 failed"),
"every action must pass\nstdout:\n{stdout}\nstderr:\n{stderr}"
);
}