1--TEST-- 2"autoescape" tag handles filters preserving the safety 3--TEMPLATE-- 4{% autoescape 'html' %} 5 6(preserves_safety is preserving safety for "html") 7 81. Unsafe values are still unsafe 9( var|preserves_safety|escape ) 10{{ var|preserves_safety }} 11 122. Safe values are still safe 13( var|escape|preserves_safety ) 14{{ var|escape|preserves_safety }} 15 163. Re-escape values that are escaped for an other contexts 17( var|escape_something|preserves_safety|escape ) 18{{ var|escape_something|preserves_safety }} 19 204. Still escape when using filters not declared safe 21( var|escape|preserves_safety|replace({'FABIEN': 'FABPOT'})|escape ) 22{{ var|escape|preserves_safety|replace({'FABIEN': 'FABPOT'}) }} 23 24{% endautoescape %} 25--DATA-- 26return ['var' => "<Fabien>\nTwig"] 27--EXPECT-- 28 29(preserves_safety is preserving safety for "html") 30 311. Unsafe values are still unsafe 32( var|preserves_safety|escape ) 33<FABIEN> 34TWIG 35 362. Safe values are still safe 37( var|escape|preserves_safety ) 38<FABIEN> 39TWIG 40 413. Re-escape values that are escaped for an other contexts 42( var|escape_something|preserves_safety|escape ) 43<FABIEN> 44TWIG 45 464. Still escape when using filters not declared safe 47( var|escape|preserves_safety|replace({'FABIEN': 'FABPOT'})|escape ) 48&LT;FABPOT&GT; 49TWIG 50 51