use assert_cmd::Command;
use predicates::prelude::*;
use std::path::{Path, PathBuf};
const EXIT_TROUBLE: i32 = 2;
fn amberfork() -> Command {
Command::cargo_bin("amberfork").expect("amberfork binary builds")
}
fn demo_pair() -> (PathBuf, PathBuf) {
let dir = Path::new(env!("CARGO_MANIFEST_DIR")).join("assets/demo");
(dir.join("bad.json"), dir.join("good.json"))
}
#[test]
fn unreadable_trace_fails_fast_with_the_typed_ingest_error() {
let (_, good) = demo_pair();
amberfork()
.arg("serve")
.arg("definitely/not/a/trace.json")
.arg("--against")
.arg(&good)
.assert()
.code(EXIT_TROUBLE)
.stdout(predicate::str::is_empty())
.stderr(predicate::str::contains("definitely/not/a/trace.json"));
}
#[test]
fn valid_pair_without_a_ui_bundle_refuses_before_binding() {
let (bad, good) = demo_pair();
amberfork()
.arg("serve")
.arg(&bad)
.arg("--against")
.arg(&good)
.assert()
.code(EXIT_TROUBLE)
.stdout(predicate::str::is_empty())
.stderr(predicate::str::contains("web UI bundle missing"));
}