1#![doc(html_favicon_url = "https://wasmer.io/images/icons/favicon-32x32.png")]
2#![doc(html_logo_url = "https://github.com/wasmerio.png?size=200")]
3
4pub mod types;
5pub mod wasi;
6
7#[test]
10#[cfg(feature = "sys")]
11fn fail_if_wit_files_arent_up_to_date() {
12 use wit_bindgen_core::Generator;
13
14 let output_wit = concat!(env!("CARGO_MANIFEST_DIR"), "/wit-clean/output.wit");
15 let bindings_target =
16 include_str!(concat!(env!("CARGO_MANIFEST_DIR"), "/src/wasi/bindings.rs"));
17 let mut generator = wit_bindgen_rust_wasm::Opts {
18 ..wit_bindgen_rust_wasm::Opts::default()
19 }
20 .build();
21 let output_wit_parsed = wit_parser::Interface::parse_file(output_wit).unwrap();
22 let imports = vec![output_wit_parsed];
23 let exports = vec![];
24 let mut files = Default::default();
25 generator.generate_all(
26 &imports, &exports, &mut files, true,
27 );
28 let generated = files
29 .iter()
30 .filter_map(|(k, v)| if k == "bindings.rs" { Some(v) } else { None })
31 .next()
32 .unwrap();
33 let generated_str = String::from_utf8_lossy(generated);
34 let generated_str = generated_str
35 .lines()
36 .map(|s| s.to_string())
37 .collect::<Vec<String>>()
38 .join("\r\n");
39 let generated_str = generated_str.replace("mod output {", "pub mod output {");
40 let bindings_target = bindings_target
41 .lines()
42 .map(|s| s.to_string())
43 .collect::<Vec<String>>()
44 .join("\r\n");
45 pretty_assertions::assert_eq!(generated_str, bindings_target); }