fn check_example_size(example: &str) -> usize {
let status = std::process::Command::new("cargo")
.env("RUSTFLAGS", "-C link-arg=-s")
.args([
"build",
"--release",
"--target",
"wasm32-unknown-unknown",
"--manifest-path",
])
.arg(format!("./examples/{}/Cargo.toml", example))
.status()
.unwrap();
if !status.success() {
panic!("building wasm example returned non-zero code {}", status);
}
let wasm = std::fs::read(format!(
"./examples/{}/target/wasm32-unknown-unknown/release/{}.wasm",
example,
example.replace('-', "_")
))
.unwrap();
wasm.len()
}
#[test]
#[ignore = "proxy can't be compiled on stable (alloc error handler)"]
fn proxy_code_size_check() {
let size = check_example_size("proxy");
assert!(size < 3600);
}
#[test]
#[cfg_attr(miri, ignore)]
fn raw_contract_code_size_check() {
let size = check_example_size("raw-contract");
assert!(size < 250);
}
#[test]
fn fungible_token_code_size_check() {
let size = check_example_size("smol_ft");
assert!(size < 1500);
}