87 lines
3.2 KiB
Rust
87 lines
3.2 KiB
Rust
use std::{str::FromStr, vec};
|
|
|
|
use auditable_serde::VersionInfo;
|
|
use wasm_encoder::Module;
|
|
use wasm_metadata::*;
|
|
|
|
#[test]
|
|
fn add_to_empty_module() {
|
|
let mut add = AddMetadata::default();
|
|
add.name = AddMetadataField::Set("foo".to_owned());
|
|
add.language = vec![("bar".to_owned(), "1.0".to_owned())];
|
|
add.processed_by = vec![("baz".to_owned(), "1.0".to_owned())];
|
|
add.sdk = vec![];
|
|
add.authors = AddMetadataField::Set(Authors::new("Chashu Cat"));
|
|
add.description = AddMetadataField::Set(Description::new("Chashu likes tuna"));
|
|
add.licenses = AddMetadataField::Set(
|
|
Licenses::new("Apache-2.0 WITH LLVM-exception OR Apache-2.0 OR MIT").unwrap(),
|
|
);
|
|
add.source = AddMetadataField::Set(
|
|
Source::new("https://github.com/bytecodealliance/wasm-tools").unwrap(),
|
|
);
|
|
add.homepage = AddMetadataField::Set(
|
|
Homepage::new("https://github.com/bytecodealliance/wasm-tools").unwrap(),
|
|
);
|
|
add.revision = AddMetadataField::Set(Revision::new("de978e17a80c1118f606fce919ba9b7d5a04a5ad"));
|
|
add.version = AddMetadataField::Set(Version::new("1.0.0"));
|
|
|
|
let json_str = r#"{"packages":[{"name":"adler","version":"0.2.3","source":"registry"}]}"#;
|
|
let info = VersionInfo::from_str(json_str).unwrap();
|
|
let mut component = Module::new();
|
|
component.section(&Dependencies::new(info.clone()));
|
|
let module = component.finish();
|
|
let module = add.to_wasm(&module).unwrap();
|
|
|
|
match Payload::from_binary(&module).unwrap() {
|
|
Payload::Module(Metadata {
|
|
name,
|
|
producers,
|
|
authors,
|
|
licenses,
|
|
source,
|
|
range,
|
|
description,
|
|
homepage,
|
|
revision,
|
|
version,
|
|
dependencies,
|
|
}) => {
|
|
assert_eq!(name, Some("foo".to_owned()));
|
|
let producers = producers.expect("some producers");
|
|
assert_eq!(
|
|
producers.get("language").unwrap().get("bar").unwrap(),
|
|
"1.0"
|
|
);
|
|
assert_eq!(
|
|
producers.get("processed-by").unwrap().get("baz").unwrap(),
|
|
"1.0"
|
|
);
|
|
|
|
assert_eq!(authors.unwrap(), Authors::new("Chashu Cat"));
|
|
assert_eq!(description.unwrap(), Description::new("Chashu likes tuna"));
|
|
assert_eq!(
|
|
licenses.unwrap(),
|
|
Licenses::new("Apache-2.0 WITH LLVM-exception OR Apache-2.0 OR MIT").unwrap()
|
|
);
|
|
assert_eq!(
|
|
source.unwrap(),
|
|
Source::new("https://github.com/bytecodealliance/wasm-tools").unwrap(),
|
|
);
|
|
assert_eq!(
|
|
homepage.unwrap(),
|
|
Homepage::new("https://github.com/bytecodealliance/wasm-tools").unwrap(),
|
|
);
|
|
assert_eq!(
|
|
revision.unwrap(),
|
|
Revision::new("de978e17a80c1118f606fce919ba9b7d5a04a5ad")
|
|
);
|
|
assert_eq!(version.unwrap(), Version::new("1.0.0"));
|
|
assert_eq!(dependencies.unwrap().version_info(), &info,);
|
|
|
|
assert_eq!(range.start, 0);
|
|
assert_eq!(range.end, 455);
|
|
}
|
|
_ => panic!("metadata should be module"),
|
|
}
|
|
}
|