crates/gunnar-recipe/tests/dev_media_profile.rs
//! ★ **DEV media build fast, release media build whole** (owner 2026-10-12: "full LTO only for
//! release media"). The `*-narrate` variants — test2's and the mock's media, never a release —
//! build with `[profile.dev-media]` (release's optimisation level, codegen-units 16, no LTO).
//! MEASURED on dwarf, `gunnar-server-narrate` after a touch of gunnar-server: release 194 s,
//! dev-media 112 s. Every other variant keeps its own profile.
use gunnar_recipe::variants::VARIANTS;
#[test]
fn the_narrate_variants_build_dev_media_and_nothing_else_does() {
let narrate: Vec<_> = VARIANTS
.iter()
.filter(|v| v.name.ends_with("-narrate"))
.collect();
assert!(!narrate.is_empty());
for v in &narrate {
assert_eq!(
v.profile, "dev-media",
"{} is a DEV medium's binary",
v.name
);
}
for v in VARIANTS.iter().filter(|v| !v.name.ends_with("-narrate")) {
assert_ne!(
v.profile, "dev-media",
"{} is not a dev medium's binary",
v.name
);
}
let cargo =
std::fs::read_to_string(concat!(env!("CARGO_MANIFEST_DIR"), "/../../Cargo.toml")).unwrap();
let block = |name: &str| -> String {
cargo
.split(&format!("[profile.{name}]\n"))
.nth(1)
.map(|b| b.split("\n[").next().unwrap_or("").to_string())
.unwrap_or_default()
};
let dm = block("dev-media");
for line in [
"inherits = \"release\"",
"lto = false",
"codegen-units = 16",
] {
assert!(
dm.lines().any(|l| l.trim() == line),
"[profile.dev-media] says {line}: {dm}"
);
}
assert!(
block("release")
.lines()
.any(|l| l.trim() == "lto = \"thin\""),
"release keeps its LTO"
);
}