/src/wasm-tools/fuzz/src/reencode.rs
Line | Count | Source |
1 | | use arbitrary::{Result, Unstructured}; |
2 | | use wasm_encoder::reencode::{Reencode, RoundtripReencoder}; |
3 | | |
4 | 1.49k | pub fn run(u: &mut Unstructured<'_>) -> Result<()> { |
5 | 1.49k | let (module1, config) = super::generate_valid_module(u, |_, _| Ok(()))?; |
6 | | |
7 | 1.49k | let mut module2 = Default::default(); |
8 | 1.49k | RoundtripReencoder |
9 | 1.49k | .parse_core_module(&mut module2, wasmparser::Parser::new(0), &module1) |
10 | 1.49k | .unwrap(); |
11 | | |
12 | 1.49k | let module2 = module2.finish(); |
13 | 1.49k | if module1 == module2 { |
14 | 1.49k | return Ok(()); |
15 | 0 | } |
16 | 0 | crate::log_wasm(&module1, &config); |
17 | 0 | crate::log_wasm(&module2, &config); |
18 | 0 | assert_eq!(module1, module2); |
19 | | |
20 | 0 | Ok(()) |
21 | 1.49k | } |
22 | | |
23 | | #[test] |
24 | | fn smoke() { |
25 | | super::test::test_n_times(100, run); |
26 | | } |