use std::path::Path;
use std::process::Command;
#[test]
fn a_consumer_with_test_helpers_never_resolves_the_fault_injection_feature() {
let server = Path::new(env!("CARGO_MANIFEST_DIR"));
let ir = server.join("../forma-ir");
let dir = Path::new(env!("CARGO_TARGET_TMPDIR")).join("server-fault-isolation-probe");
std::fs::create_dir_all(dir.join("src")).expect("scratch dir");
std::fs::write(
dir.join("Cargo.toml"),
format!(
"[package]\nname = \"server-fault-isolation-probe\"\nversion = \"0.0.0\"\n\
edition = \"2018\"\npublish = false\n\n[dependencies]\n\
forma-server = {{ path = '{}' }}\n\
forma-ir = {{ path = '{}', features = [\"test-helpers\"] }}\n\n[workspace]\n",
server.display(),
ir.display()
),
)
.expect("scratch manifest");
std::fs::write(dir.join("src/lib.rs"), "").expect("scratch lib");
let output = Command::new(env!("CARGO"))
.args(["tree", "--offline", "-e", "features", "-i", "forma-ir"])
.current_dir(&dir)
.env("CARGO_TARGET_DIR", dir.join("target"))
.output()
.expect("cargo runs");
let tree = String::from_utf8_lossy(&output.stdout);
assert!(
output.status.success(),
"{tree}{}",
String::from_utf8_lossy(&output.stderr)
);
assert!(tree.contains("forma-ir feature \"test-helpers\""), "{tree}");
assert!(tree.contains("forma-server"), "{tree}");
assert!(!tree.contains("__fault-injection"), "{tree}");
}