pub(crate) fn should_echo() -> bool {
std::env::var_os("NO_ECHO").is_none()
}
pub(crate) fn conditional_eprintln(args: std::fmt::Arguments) {
if should_echo() {
eprintln!("{}", args);
}
}
#[cfg(test)]
mod tests {
use super::*;
use serial_test::serial;
#[test]
#[serial]
fn test_should_echo_normal() {
let original = std::env::var("NO_ECHO").ok();
unsafe {
std::env::remove_var("NO_ECHO");
}
assert!(should_echo());
unsafe {
match original {
Some(val) => std::env::set_var("NO_ECHO", val),
None => std::env::remove_var("NO_ECHO"),
}
}
}
#[test]
#[serial]
fn test_should_echo_with_no_echo_env() {
let original = std::env::var("NO_ECHO").ok();
unsafe {
std::env::set_var("NO_ECHO", "1");
}
assert!(!should_echo());
unsafe {
match original {
Some(val) => std::env::set_var("NO_ECHO", val),
None => std::env::remove_var("NO_ECHO"),
}
}
}
#[test]
fn test_conditional_functions_compile() {
conditional_eprintln(format_args!("test"));
}
}