#[macro_export]
macro_rules! rerun_if_changed {
(to: $stream:expr, $($path:expr),+ $(,)?) => {
$($crate::pair!(to: $stream, "rerun-if-changed", "{}", $path);)+
};
($($path:expr),+ $(,)?) => {
$crate::rerun_if_changed!(to: std::io::stdout(), $($path),+);
};
}
#[cfg(test)]
mod tests {
use std::path::PathBuf;
#[test]
fn single_literal() {
insta::assert_display_snapshot!(
crate::capture_output(|output| {
crate::rerun_if_changed!(
to: output,
"/path/to/resource"
);
}),
@"cargo:rerun-if-changed=/path/to/resource\n"
);
}
#[test]
fn single_expression() {
insta::assert_display_snapshot!(
crate::capture_output(|output| {
crate::rerun_if_changed!(
to: output,
PathBuf::from("/path/to/resource").display()
);
}),
@"cargo:rerun-if-changed=/path/to/resource\n"
);
}
#[test]
fn multiple_literals() {
insta::assert_display_snapshot!(
crate::capture_output(|output| {
crate::rerun_if_changed!(
to: output,
"/path/to/resource1",
"/path/to/resource2",
"/path/to/resource3",
"/path/to/resource4",
);
}),
@"cargo:rerun-if-changed=/path/to/resource1\n\
cargo:rerun-if-changed=/path/to/resource2\n\
cargo:rerun-if-changed=/path/to/resource3\n\
cargo:rerun-if-changed=/path/to/resource4\n"
);
}
#[test]
fn multiple_expressions() {
insta::assert_display_snapshot!(
crate::capture_output(|output| {
crate::rerun_if_changed!(
to: output,
PathBuf::from("/path/to/resource1").display(),
PathBuf::from("/path/to/resource2").display(),
PathBuf::from("/path/to/resource3").display(),
PathBuf::from("/path/to/resource4").display(),
);
}),
@"cargo:rerun-if-changed=/path/to/resource1\n\
cargo:rerun-if-changed=/path/to/resource2\n\
cargo:rerun-if-changed=/path/to/resource3\n\
cargo:rerun-if-changed=/path/to/resource4\n"
);
}
#[test]
fn multiple_mixed() {
insta::assert_display_snapshot!(
crate::capture_output(|output| {
crate::rerun_if_changed!(
to: output,
"/path/to/resource1",
PathBuf::from("/path/to/resource2").display(),
"/path/to/resource3",
PathBuf::from("/path/to/resource4").display(),
);
}),
@"cargo:rerun-if-changed=/path/to/resource1\n\
cargo:rerun-if-changed=/path/to/resource2\n\
cargo:rerun-if-changed=/path/to/resource3\n\
cargo:rerun-if-changed=/path/to/resource4\n"
);
}
}