in crates/fig_install/src/index.rs [444:592]
fn index_serde_test() {
let old_cli_name = OLD_CLI_BINARY_NAMES[0];
let json_str = serde_json::json!({
"supported": [
{
"kind": "dmg",
"targetTriple": "universal-apple-darwin",
"os": "macos",
"architecture": "universal",
"variant": "full",
"fileType": "dmg"
},
{
"kind": "deb",
"targetTriple": "x86_64-unknown-linux-gnu",
"os": "linux",
"architecture": "x86_64",
"variant": "headless",
"fileType": "tarZst"
}
],
"versions": [
{
"version": "0.7.0",
"rollout": null,
"packages": [
{
"kind": "dmg",
"architecture": "universal",
"variant": "full",
"download": format!("0.7.0/{old_cli_name}.dmg"),
"sha256": "4213d7649e4b1a2ec50adc0266d32d3e1e1f952ed6a863c28d7538190dc92472",
"size": 82975504
}
]
},
{
"version": "0.15.3",
"packages": [
{
"kind": "dmg",
"architecture": "universal",
"variant": "full",
"download": format!("0.15.3/{OLD_PRODUCT_NAME}.dmg"),
"sha256": "87a311e493bb2b0e68a1b4b5d267c79628d23c1e39b0a62d1a80b0c2352f80a2",
"size": 88174538,
"cliPath": format!("Contents/MacOS/{old_cli_name}")
}
]
},
{
"version": "1.0.0",
"packages": [
{
"kind": "deb",
"fileType": "dmg",
"os": "macos",
"architecture": "universal",
"variant": "full",
"download": "1.0.0/Q.dmg",
"sha256": "87a311e493bb2b0e68a1b4b5d267c79628d23c1e39b0a62d1a80b0c2352f80a2",
"size": 88174538,
"cliPath": format!("Contents/MacOS/{old_cli_name}"),
},
{
"kind": "deb",
"fileType": "tarZst",
"os": "linux",
"architecture": "x86_64",
"variant": "headless",
"download": "1.0.0/q-x86_64-linux.tar.zst",
"sha256": "5a6abea56bfa91bd58d49fe40322058d0efea825f7e19f7fb7db1c204ae625b6",
"size": 76836772,
}
]
},
{
"version": "2.0.0",
"packages": [
{
// random values to ensure forward compat
"kind": "abc",
"fileType": "abc",
"os": "abc",
"architecture": "abc",
"variant": "abc",
"download": "abc",
"sha256": "abc",
"size": 123,
"cliPath": "abc",
"otherField": "abc"
}
]
}
]
})
.to_string();
let index = serde_json::from_str::<Index>(&json_str).unwrap();
println!("{:#?}", index);
assert_eq!(index.supported.len(), 2);
assert_eq!(index.supported[0], Support {
architecture: PackageArchitecture::Universal,
target_triple: Some(TargetTriple::UniversalAppleDarwin),
variant: Variant::Full,
os: Some(Os::Macos),
file_type: Some(FileType::Dmg),
});
assert_eq!(index.supported[1], Support {
architecture: PackageArchitecture::X86_64,
target_triple: Some(TargetTriple::X86_64UnknownLinuxGnu),
variant: Variant::Minimal,
os: Some(Os::Linux),
file_type: Some(FileType::TarZst),
});
assert_eq!(index.versions.len(), 4);
// check the 1.0.0 entry matches
assert_eq!(index.versions[2], RemoteVersion {
version: Version::new(1, 0, 0),
rollout: None,
packages: vec![
Package {
architecture: PackageArchitecture::Universal,
variant: Variant::Full,
os: Some(Os::Macos),
target_triple: None,
file_type: Some(FileType::Dmg),
download: "1.0.0/Q.dmg".into(),
sha256: "87a311e493bb2b0e68a1b4b5d267c79628d23c1e39b0a62d1a80b0c2352f80a2".into(),
size: 88174538,
cli_path: Some(format!("Contents/MacOS/{old_cli_name}")),
},
Package {
architecture: PackageArchitecture::X86_64,
variant: Variant::Minimal,
os: Some(Os::Linux),
target_triple: None,
file_type: Some(FileType::TarZst),
download: "1.0.0/q-x86_64-linux.tar.zst".into(),
sha256: "5a6abea56bfa91bd58d49fe40322058d0efea825f7e19f7fb7db1c204ae625b6".into(),
size: 76836772,
cli_path: None,
}
],
});
}