#[macro_export]
macro_rules! rustc_env {
(to: $stream:expr, $key:expr, $value:expr $(, $($args:tt)*)?) => {
$crate::pair!(to: $stream, "rustc-env", concat!($key, "=", $value) $(, $($args)+)?);
};
($key:expr, $value:expr $(, $($args:tt)*)?) => {
$crate::rustc_env!(to: std::io::stdout(), $key, $value $(, $($args)+)?);
};
}
#[cfg(test)]
mod tests {
#[test]
fn single_literal() {
insta::assert_display_snapshot!(
crate::capture_output(|output| {
crate::rustc_env!(
to: output,
"KEY", "VALUE"
);
}),
@"cargo:rustc-env=KEY=VALUE\n"
);
}
#[test]
fn single_with_key_formatted_by_index() {
insta::assert_display_snapshot!(
crate::capture_output(|output| {
crate::rustc_env!(
to: output,
"{}", "VALUE", "KEY"
);
}),
@"cargo:rustc-env=KEY=VALUE\n"
);
}
#[test]
fn single_with_key_formatted_by_name() {
insta::assert_display_snapshot!(
crate::capture_output(|output| {
crate::rustc_env!(
to: output,
"{key}", "VALUE", key = "KEY"
);
}),
@"cargo:rustc-env=KEY=VALUE\n"
);
}
#[test]
fn single_with_value_formatted_by_index() {
insta::assert_display_snapshot!(
crate::capture_output(|output| {
crate::rustc_env!(
to: output,
"KEY", "{}", "VALUE"
);
}),
@"cargo:rustc-env=KEY=VALUE\n"
);
}
#[test]
fn single_with_value_formatted_by_name() {
insta::assert_display_snapshot!(
crate::capture_output(|output| {
crate::rustc_env!(
to: output,
"KEY", "{value}", value = "VALUE"
);
}),
@"cargo:rustc-env=KEY=VALUE\n"
);
}
#[test]
fn single_with_key_and_value_formatted_by_index() {
insta::assert_display_snapshot!(
crate::capture_output(|output| {
crate::rustc_env!(
to: output,
"{}", "{}", "KEY", "VALUE"
);
}),
@"cargo:rustc-env=KEY=VALUE\n"
);
}
#[test]
fn single_with_key_and_value_formatted_by_name() {
insta::assert_display_snapshot!(
crate::capture_output(|output| {
crate::rustc_env!(
to: output,
"{key}", "{value}", key = "KEY", value = "VALUE"
);
}),
@"cargo:rustc-env=KEY=VALUE\n"
);
}
}