use std::path::PathBuf;
use std::process::Command;
fn pounce_exe() -> PathBuf {
PathBuf::from(env!("CARGO_BIN_EXE_pounce"))
}
fn fixture_nl() -> PathBuf {
let mut p = PathBuf::from(env!("CARGO_MANIFEST_DIR"));
p.push("tests");
p.push("fixtures");
p.push("parametric.nl");
p
}
#[test]
fn l1_fallback_flag_does_not_panic_in_cli() {
let output = Command::new(pounce_exe())
.arg(fixture_nl())
.arg("l1_fallback_on_restoration_failure=yes")
.output()
.expect("spawn pounce");
let code = output.status.code();
assert!(
matches!(code, Some(0) | Some(1)),
"unexpected exit: {:?} stderr={}",
output.status,
String::from_utf8_lossy(&output.stderr),
);
let stderr = String::from_utf8_lossy(&output.stderr);
assert!(
!stderr.contains("restoration factory invoked more than once"),
"panic message in stderr (pounce#24 regression):\n{stderr}",
);
}
#[test]
fn l1_exact_penalty_barrier_flag_does_not_panic_in_cli() {
let output = Command::new(pounce_exe())
.arg(fixture_nl())
.arg("l1_exact_penalty_barrier=yes")
.output()
.expect("spawn pounce");
let code = output.status.code();
assert!(
matches!(code, Some(0) | Some(1)),
"unexpected exit: {:?} stderr={}",
output.status,
String::from_utf8_lossy(&output.stderr),
);
let stderr = String::from_utf8_lossy(&output.stderr);
assert!(
!stderr.contains("restoration factory invoked more than once"),
"panic message in stderr (pounce#24 regression):\n{stderr}",
);
}