#![cfg(not(miri))] #![warn(rust_2018_idioms, single_use_lifetimes)] use std::{ env, process::{Command, ExitStatus, Stdio}, }; const PATH: &str = "tests/expand/**/*.rs"; #[rustversion::attr(not(nightly), ignore)] #[test] fn expandtest() { let is_ci = env::var_os("CI").is_some(); let cargo = &*env::var("CARGO").unwrap_or_else(|_| "cargo".into()); if !has_command(&[cargo, "expand"]) || !has_command(&[cargo, "fmt"]) { if is_ci { panic!("expandtest requires rustfmt and cargo-expand"); } return; } let args = &["--all-features"]; if is_ci { macrotest::expand_without_refresh_args(PATH, args); } else { env::set_var("MACROTEST", "overwrite"); macrotest::expand_args(PATH, args); } } fn has_command(command: &[&str]) -> bool { Command::new(command[0]) .args(&command[1..]) .arg("--version") .stdin(Stdio::null()) .stdout(Stdio::null()) .stderr(Stdio::null()) .status() .as_ref() .map(ExitStatus::success) .unwrap_or(false) }