Skip to content

Commit f03c59d

Browse files
refactor(wasm): Clean input unit test for wasm release.
1 parent 42c6066 commit f03c59d

1 file changed

Lines changed: 11 additions & 5 deletions

File tree

compiler/src/wasm.rs

Lines changed: 11 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -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

Comments
 (0)