Add tests for whitespace argument in template derive proc-macro

This commit is contained in:
Guillaume Gomez 2023-03-07 12:14:07 +01:00 committed by Dirkjan Ochtman
parent 3ea521d6e8
commit 40be079d5d
2 changed files with 54 additions and 0 deletions

View File

@ -549,4 +549,34 @@ mod tests {
.unwrap();
assert_eq!(config.whitespace, WhitespaceHandling::Minimize);
}
#[cfg(feature = "toml")]
#[test]
fn test_whitespace_in_template() {
// Checking that template arguments have precedence over general configuration.
// So in here, in the template arguments, there is `whitespace = "minimize"` so
// the `WhitespaceHandling` should be `Minimize` as well.
let config = Config::new(
r#"
[general]
whitespace = "suppress"
"#,
Some(&"minimize".to_owned()),
)
.unwrap();
assert_eq!(config.whitespace, WhitespaceHandling::Minimize);
let config = Config::new(r#""#, Some(&"minimize".to_owned())).unwrap();
assert_eq!(config.whitespace, WhitespaceHandling::Minimize);
}
#[test]
fn test_config_whitespace_error() {
let config = Config::new(r#""#, Some(&"trim".to_owned()));
if let Err(err) = config {
assert_eq!(err.msg, "invalid value for `whitespace`: \"trim\"");
} else {
panic!("Config::new should have return an error");
}
}
}

View File

@ -116,3 +116,27 @@ fn test_outer_whitespace() {
test_template!(" 1{# #} ", " 1 ");
test_template!("\n1{# #}\n\n\n", "\n1\n\n\n");
}
macro_rules! test_template_ws_config {
($config:literal, $ws:literal, $source:literal, $rendered: literal) => {{
#[derive(Template)]
#[template(source = $source, ext = "txt", config = $config, whitespace = $ws)]
struct CondWs;
assert_eq!(CondWs.render().unwrap(), $rendered);
}};
}
#[test]
fn test_template_whitespace_config() {
test_template_ws_config!("test_trim.toml", "preserve", "\t1{# #}\t2", "\t1\t2");
test_template_ws_config!("test_trim.toml", "minimize", " 1{# #} 2", " 1 2");
test_template_ws_config!("test_trim.toml", "suppress", " 1{# #} 2", " 12");
test_template_ws_config!(
"test_minimize.toml",
"preserve",
"\n1{# #}\n\n\n2",
"\n1\n\n\n2"
);
test_template_ws_config!("test_minimize.toml", "suppress", "\n1{# #}\n\n\n2", "\n12");
}