aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorLibravatar René Kijewski <kijewski@library.vetmed.fu-berlin.de>2021-07-02 09:47:15 +0200
committerLibravatar Dirkjan Ochtman <dirkjan@ochtman.nl>2021-07-02 16:37:11 +0200
commite9badca2573a8e6f89e14a75446e1c890ebd843f (patch)
tree43ba50419c699dadc185c506805f0402bdac62f0
parentc31fe5f3fc313ca539ff1f1c92cc1337a472e809 (diff)
downloadaskama-e9badca2573a8e6f89e14a75446e1c890ebd843f.tar.gz
askama-e9badca2573a8e6f89e14a75446e1c890ebd843f.tar.bz2
askama-e9badca2573a8e6f89e14a75446e1c890ebd843f.zip
Replace rust_macro test to work on nightly
The current rust_test uses `stringify!()`. The documentation gives us the warning: > Note that the expanded results of the input tokens may change in the > future. You should be careful if you rely on the output. In the current nightly rust the result was indeed changed, so the test not fails. This PR replaces the test with another macro, that does not depend on `stringify!()`. Closes issue #504.
Diffstat (limited to '')
-rw-r--r--testing/templates/rust-macro-args.html6
-rw-r--r--testing/tests/rust_macro.rs26
2 files changed, 18 insertions, 14 deletions
diff --git a/testing/templates/rust-macro-args.html b/testing/templates/rust-macro-args.html
index 9dca314..11aef54 100644
--- a/testing/templates/rust-macro-args.html
+++ b/testing/templates/rust-macro-args.html
@@ -1,3 +1,3 @@
-{{ call_a_or_b_on_tail!((a: compute_len, b: zero), call b: only the terminal rules care.) }}
-{{ call_a_or_b_on_tail!((a: compute_len, b: zero), call a: some ninety one!) }}
-{{ call_a_or_b_on_tail!((a: compute_len, b: zero), call a: some ninety "(\"()"nine!) }}
+{{ call_a_or_b_on_tail!((a: year, b: month, c: day), call a: 2021, "July", (0+2)) }}
+{{ call_a_or_b_on_tail!((a: year, b: month, c: day), call b: 2021, "July", (0+2)) }}
+{{ call_a_or_b_on_tail!((a: year, b: day, c: month), call b: 2021, "July", (0+2)) }}
diff --git a/testing/tests/rust_macro.rs b/testing/tests/rust_macro.rs
index 8d2543d..2efe8be 100644
--- a/testing/tests/rust_macro.rs
+++ b/testing/tests/rust_macro.rs
@@ -17,25 +17,29 @@ fn main() {
}
macro_rules! call_a_or_b_on_tail {
- ((a: $a:expr, b: $b:expr), call a: $($tail:tt)*) => {
- $a(stringify!($($tail)*))
+ ((a: $a:expr, b: $b:expr, c: $c:expr), call a: $($tail:expr),*) => {
+ ($a)($($tail),*)
};
- ((a: $a:expr, b: $b:expr), call b: $($tail:tt)*) => {
- $b(stringify!($($tail)*))
+ ((a: $a:expr, b: $b:expr, c: $c:expr), call b: $($tail:expr),*) => {
+ ($b)($($tail),*)
};
- ($ab:tt, $_skip:tt $($tail:tt)*) => {
- call_a_or_b_on_tail!($ab, $($tail)*)
+ ((a: $a:expr, b: $b:expr, c: $c:expr), call c: $($tail:expr),*) => {
+ ($c)($($tail),*)
};
}
-fn compute_len(s: &str) -> usize {
- s.len()
+fn year(y: u16, _: &str, _: u8) -> u16 {
+ y
}
-fn zero(_s: &str) -> usize {
- 0
+fn month(_: u16, m: &str, _: u8) -> &str {
+ m
+}
+
+fn day(_: u16, _: &str, d: u8) -> u8 {
+ d
}
#[derive(Template)]
@@ -45,5 +49,5 @@ struct RustMacrosArgTemplate {}
#[test]
fn args() {
let template = RustMacrosArgTemplate {};
- assert_eq!("0\n17\n25", template.render().unwrap());
+ assert_eq!("2021\nJuly\n2", template.render().unwrap());
}