use std::process::Command;
#[test]
fn test_macros_accept_format_args() {
nanologger::init().ok();
let value = 42;
let name = "world";
let items = vec![1, 2, 3];
nanologger::error!("code {}", value);
nanologger::warn!("code {}", value);
nanologger::info!("hello {}", name);
nanologger::debug!("value is {val}", val = value);
nanologger::trace!("items: {:?}", items);
}
#[test]
fn test_macros_write_to_stderr_not_stdout() {
if std::env::var("__NANOLOG_STDERR_CHECK").is_ok() {
nanologger::init().unwrap();
nanologger::info!("hello from info");
nanologger::error!("hello from error");
return;
}
let exe = std::env::current_exe().expect("current_exe");
let output = Command::new(exe)
.arg("test_macros_write_to_stderr_not_stdout")
.arg("--exact")
.arg("--nocapture")
.env("__NANOLOG_STDERR_CHECK", "1")
.output()
.expect("failed to spawn subprocess");
let stdout = String::from_utf8_lossy(&output.stdout);
let stderr = String::from_utf8_lossy(&output.stderr);
assert!(
!stdout.contains("[INFO]") && !stdout.contains("[ERROR]"),
"Expected no log output on stdout, got: {:?}",
stdout
);
assert!(
stderr.contains("hello from info"),
"Expected stderr to contain 'hello from info', got: {:?}",
stderr
);
assert!(
stderr.contains("hello from error"),
"Expected stderr to contain 'hello from error', got: {:?}",
stderr
);
}