1+ use std:: collections:: HashMap ;
2+
13use tera:: Context ;
24
35use crate :: {
@@ -81,6 +83,14 @@ fn extend_single_cases(single_cases: &mut Vec<SingleTestCase>, cases: Vec<TestCa
8183 }
8284}
8385
86+ // TODO document how to write tera templates for other contributors
87+ fn to_hex ( value : & tera:: Value , _args : & HashMap < String , tera:: Value > ) -> tera:: Result < tera:: Value > {
88+ Ok ( serde_json:: Value :: String ( format ! (
89+ "{:x}" ,
90+ value. as_u64( ) . unwrap( )
91+ ) ) )
92+ }
93+
8494fn generate_tests ( slug : & str , fn_names : Vec < String > ) -> String {
8595 let cases = get_canonical_data ( slug) . cases ;
8696 let excluded_tests = get_excluded_tests ( slug) ;
@@ -90,6 +100,7 @@ fn generate_tests(slug: &str, fn_names: Vec<String>) -> String {
90100 . add_raw_template ( "test_template.tera" , TEST_TEMPLATE )
91101 . unwrap ( ) ;
92102 }
103+ template. register_filter ( "to_hex" , to_hex) ;
93104
94105 let mut single_cases = Vec :: new ( ) ;
95106 extend_single_cases ( & mut single_cases, cases) ;
@@ -100,5 +111,9 @@ fn generate_tests(slug: &str, fn_names: Vec<String>) -> String {
100111 context. insert ( "fn_names" , & fn_names) ;
101112 context. insert ( "cases" , & single_cases) ;
102113
103- template. render ( "test_template.tera" , & context) . unwrap ( ) . trim_start ( ) . into ( )
114+ template
115+ . render ( "test_template.tera" , & context)
116+ . unwrap ( )
117+ . trim_start ( )
118+ . into ( )
104119}
0 commit comments