From 2bd436417aed078d6db64be6afe9fe77092382e2 Mon Sep 17 00:00:00 2001 From: Markus Ebner Date: Thu, 3 Jul 2025 21:08:48 +0200 Subject: [PATCH] Add unit-tests for #505 --- testing/tests/calls.rs | 53 ++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 53 insertions(+) diff --git a/testing/tests/calls.rs b/testing/tests/calls.rs index f1ff206a..a42a1ddc 100644 --- a/testing/tests/calls.rs +++ b/testing/tests/calls.rs @@ -146,6 +146,59 @@ nested assert_eq!(CallerEmpty.render().unwrap(), "\nnested\n\n"); } +#[test] +fn test_nested_caller_aliasing1() { + #[derive(Template)] + #[template( + source = r#" +{%- macro inner() -%} + inner before|{{- caller(1) -}}|inner after +{%- endmacro -%} +{%- macro outer() -%} + outer before| + {%- set caller_ = caller -%} + {%- call(c) inner() -%} + {{c}} + {{- caller_(3, 4) -}} + {%- endcall -%} + |outer after +{%- endmacro -%} +{%- call(a, b) outer() -%} + content{{a}}-{{b}} +{%- endcall -%} +"#, + ext = "html" + )] + struct NestedCallerAliasing; + assert_eq!( + NestedCallerAliasing.render().unwrap(), + "outer before|inner before|1content3-4|inner after|outer after" + ); +} + +#[test] +fn test_nested_caller_aliasing2() { + #[derive(Template)] + #[template( + source = r#" +{%- macro layer0() -%}A{{ caller() }}a{%- endmacro -%} +{%- macro layer1() -%}B + {%- set caller_layer1 = caller -%} + {%- call layer0() -%}{{ caller_layer1() }}{%- endcall -%} +b{%- endmacro -%} +{%- macro layer2() -%}C + {%- set caller_layer2 = caller -%} + {%- call layer1() -%}{{ caller_layer2() }}{%- endcall -%} +c{%- endmacro -%} + +{%- call layer2() -%}_CONTENT_{%- endcall -%} +"#, + ext = "html" + )] + struct NestedCallerAliasing; + assert_eq!(NestedCallerAliasing.render().unwrap(), "CBA_CONTENT_abc"); +} + #[test] fn test_caller_struct() { struct TestInput<'a> {