const RAW_NOT_PUBLISHED: &str =
"no matching package named `harmont-cloud-raw` found";
fn run_cargo_package(pkg: &str) -> std::process::Output {
std::process::Command::new(env!("CARGO"))
.args(["package", "--allow-dirty", "-p", pkg])
.output()
.expect("cargo runs")
}
#[test]
fn package_is_publishable() {
if std::env::var("HARMONT_SDK_PACK_TEST").is_err() {
eprintln!("skip: set HARMONT_SDK_PACK_TEST=1 to run");
return;
}
let raw = run_cargo_package("harmont-cloud-raw");
assert!(
raw.status.success(),
"cargo package harmont-cloud-raw failed:\n{}",
String::from_utf8_lossy(&raw.stderr)
);
let high = run_cargo_package("harmont-cloud");
if !high.status.success() {
let stderr = String::from_utf8_lossy(&high.stderr);
assert!(
stderr.contains(RAW_NOT_PUBLISHED),
"cargo package harmont-cloud failed for an unexpected reason \
(expected only the crates.io ordering error for \
harmont-cloud-raw, got):\n{stderr}"
);
eprintln!(
"note: harmont-cloud packaging skipped the verify step because \
harmont-cloud-raw is not yet on crates.io (publish it first)"
);
}
}