@@ -95,9 +95,10 @@ mod tests {
9595 struct Case {
9696 src : String ,
9797 output : Vec < String > ,
98- result : String ,
9998 #[ serde( default ) ]
10099 error : Option < String > ,
100+ #[ serde( default ) ]
101+ input : Vec < String > ,
101102 }
102103
103104 #[ test]
@@ -107,22 +108,27 @@ mod tests {
107108 ) . expect ( "invalid JSON" ) ;
108109
109110 for case in cases {
110- // WASM: input tests should produce a RuntimeError
111- let expect_input_error = case. input . len ( ) > 0 && cfg ! ( target_arch = "wasm32" ) ;
112111 let ( chunk, errs) = Parser :: new ( & case. src , lexer ( & case. src ) ) . parse ( ) ;
113112 assert ! ( errs. is_empty( ) , "parse error on {:?}: {:?}" , case. src, errs. iter( ) . map( |e| & e. msg) . collect:: <Vec <_>>( ) ) ;
114113
115114 let mut vm = VM :: new ( & chunk) ;
115+ vm. input_buffer = case. input . clone ( ) ;
116+ // WASM: input tests should produce a RuntimeError
117+ let expect_input_error = case. input . len ( ) > 0 && cfg ! ( target_arch = "wasm32" ) ;
118+
116119 match vm. run ( ) {
117- Ok ( obj) => {
118- assert_eq ! ( vm. display( obj) , case. result, "result mismatch on: {:?}" , case. src) ;
120+ Ok ( _) => {
119121 assert_eq ! ( vm. output, case. output, "output mismatch on: {:?}" , case. src) ;
120122 }
121123 Err ( e) => match & case. error {
122124 Some ( expected) => assert ! (
123125 e. to_string( ) . contains( expected. as_str( ) ) ,
124126 "wrong error on {:?}: got '{}', expected '{}'" , case. src, e, expected
125127 ) ,
128+ None if expect_input_error => assert ! (
129+ e. to_string( ) . contains( "input" ) ,
130+ "expected input RuntimeError on wasm32 for: {:?}" , case. src
131+ ) ,
126132 None => panic ! ( "VM error on {:?}: {}" , case. src, e) ,
127133 }
128134 }
0 commit comments