diff --git a/src/proto.rs b/src/proto.rs index 06fac25..9c6b5d6 100644 --- a/src/proto.rs +++ b/src/proto.rs @@ -45,16 +45,20 @@ pub fn download_prebuilt( _ => unreachable!(), }; - let os = env.os; - - let prefix = match os { - HostOS::Linux => format!("zig-linux-{arch}-{version}"), - HostOS::MacOS => format!("zig-macos-{arch}-{version}"), - HostOS::Windows => format!("zig-windows-{arch}-{version}"), + let os = match env.os { + HostOS::Linux => "linux", + HostOS::MacOS => "macos", + HostOS::Windows => "windows", _ => unreachable!(), }; - let filename = if os.is_windows() { + let prefix = if version >= VersionSpec::parse("0.14.1")? { + format!("zig-{arch}-{os}-{version}") + } else { + format!("zig-{os}-{arch}-{version}") + }; + + let filename = if env.os.is_windows() { format!("{prefix}.zip") } else { format!("{prefix}.tar.xz") diff --git a/tests/download_test.rs b/tests/download_test.rs index ba80dcf..fa640e5 100644 --- a/tests/download_test.rs +++ b/tests/download_test.rs @@ -1,6 +1,6 @@ use proto_pdk_test_utils::*; -generate_download_install_tests!("zig-test", "0.11.0"); +generate_download_install_tests!("zig-test", "0.14.1"); mod canary { use super::*; @@ -21,23 +21,23 @@ async fn supports_linux_arm64() { plugin .download_prebuilt(DownloadPrebuiltInput { context: ToolContext { - version: VersionSpec::parse("0.11.0").unwrap(), + version: VersionSpec::parse("0.14.1").unwrap(), ..Default::default() }, ..Default::default() }) .await, DownloadPrebuiltOutput { - archive_prefix: Some("zig-linux-aarch64-0.11.0".into()), + archive_prefix: Some("zig-aarch64-linux-0.14.1".into()), checksum_url: Some( - "https://ziglang.org/download/0.11.0/zig-linux-aarch64-0.11.0.tar.xz.minisig" + "https://ziglang.org/download/0.14.1/zig-aarch64-linux-0.14.1.tar.xz.minisig" .into() ), checksum_public_key: Some( "RWSGOq2NVecA2UPNdBUZykf1CCb147pkmdtYxgb3Ti+JO/wCYvhbAb/U".into() ), - download_name: Some("zig-linux-aarch64-0.11.0.tar.xz".into()), - download_url: "https://ziglang.org/download/0.11.0/zig-linux-aarch64-0.11.0.tar.xz" + download_name: Some("zig-aarch64-linux-0.14.1.tar.xz".into()), + download_url: "https://ziglang.org/download/0.14.1/zig-aarch64-linux-0.14.1.tar.xz" .into(), ..Default::default() } @@ -57,22 +57,22 @@ async fn supports_linux_x64() { plugin .download_prebuilt(DownloadPrebuiltInput { context: ToolContext { - version: VersionSpec::parse("0.11.0").unwrap(), + version: VersionSpec::parse("0.14.1").unwrap(), ..Default::default() }, ..Default::default() }) .await, DownloadPrebuiltOutput { - archive_prefix: Some("zig-linux-x86_64-0.11.0".into()), + archive_prefix: Some("zig-x86_64-linux-0.14.1".into()), checksum_url: Some( - "https://ziglang.org/download/0.11.0/zig-linux-x86_64-0.11.0.tar.xz.minisig".into() + "https://ziglang.org/download/0.14.1/zig-x86_64-linux-0.14.1.tar.xz.minisig".into() ), checksum_public_key: Some( "RWSGOq2NVecA2UPNdBUZykf1CCb147pkmdtYxgb3Ti+JO/wCYvhbAb/U".into() ), - download_name: Some("zig-linux-x86_64-0.11.0.tar.xz".into()), - download_url: "https://ziglang.org/download/0.11.0/zig-linux-x86_64-0.11.0.tar.xz" + download_name: Some("zig-x86_64-linux-0.14.1.tar.xz".into()), + download_url: "https://ziglang.org/download/0.14.1/zig-x86_64-linux-0.14.1.tar.xz" .into(), ..Default::default() } @@ -92,22 +92,22 @@ async fn supports_linux_x86() { plugin .download_prebuilt(DownloadPrebuiltInput { context: ToolContext { - version: VersionSpec::parse("0.11.0").unwrap(), + version: VersionSpec::parse("0.14.1").unwrap(), ..Default::default() }, ..Default::default() }) .await, DownloadPrebuiltOutput { - archive_prefix: Some("zig-linux-x86-0.11.0".into()), + archive_prefix: Some("zig-x86-linux-0.14.1".into()), checksum_url: Some( - "https://ziglang.org/download/0.11.0/zig-linux-x86-0.11.0.tar.xz.minisig".into() + "https://ziglang.org/download/0.14.1/zig-x86-linux-0.14.1.tar.xz.minisig".into() ), checksum_public_key: Some( "RWSGOq2NVecA2UPNdBUZykf1CCb147pkmdtYxgb3Ti+JO/wCYvhbAb/U".into() ), - download_name: Some("zig-linux-x86-0.11.0.tar.xz".into()), - download_url: "https://ziglang.org/download/0.11.0/zig-linux-x86-0.11.0.tar.xz".into(), + download_name: Some("zig-x86-linux-0.14.1.tar.xz".into()), + download_url: "https://ziglang.org/download/0.14.1/zig-x86-linux-0.14.1.tar.xz".into(), ..Default::default() } ); @@ -126,23 +126,23 @@ async fn supports_macos_arm64() { plugin .download_prebuilt(DownloadPrebuiltInput { context: ToolContext { - version: VersionSpec::parse("0.11.0").unwrap(), + version: VersionSpec::parse("0.14.1").unwrap(), ..Default::default() }, ..Default::default() }) .await, DownloadPrebuiltOutput { - archive_prefix: Some("zig-macos-aarch64-0.11.0".into()), + archive_prefix: Some("zig-aarch64-macos-0.14.1".into()), checksum_url: Some( - "https://ziglang.org/download/0.11.0/zig-macos-aarch64-0.11.0.tar.xz.minisig" + "https://ziglang.org/download/0.14.1/zig-aarch64-macos-0.14.1.tar.xz.minisig" .into() ), checksum_public_key: Some( "RWSGOq2NVecA2UPNdBUZykf1CCb147pkmdtYxgb3Ti+JO/wCYvhbAb/U".into() ), - download_name: Some("zig-macos-aarch64-0.11.0.tar.xz".into()), - download_url: "https://ziglang.org/download/0.11.0/zig-macos-aarch64-0.11.0.tar.xz" + download_name: Some("zig-aarch64-macos-0.14.1.tar.xz".into()), + download_url: "https://ziglang.org/download/0.14.1/zig-aarch64-macos-0.14.1.tar.xz" .into(), ..Default::default() } @@ -162,22 +162,22 @@ async fn supports_macos_x64() { plugin .download_prebuilt(DownloadPrebuiltInput { context: ToolContext { - version: VersionSpec::parse("0.11.0").unwrap(), + version: VersionSpec::parse("0.14.1").unwrap(), ..Default::default() }, ..Default::default() }) .await, DownloadPrebuiltOutput { - archive_prefix: Some("zig-macos-x86_64-0.11.0".into()), + archive_prefix: Some("zig-x86_64-macos-0.14.1".into()), checksum_url: Some( - "https://ziglang.org/download/0.11.0/zig-macos-x86_64-0.11.0.tar.xz.minisig".into() + "https://ziglang.org/download/0.14.1/zig-x86_64-macos-0.14.1.tar.xz.minisig".into() ), checksum_public_key: Some( "RWSGOq2NVecA2UPNdBUZykf1CCb147pkmdtYxgb3Ti+JO/wCYvhbAb/U".into() ), - download_name: Some("zig-macos-x86_64-0.11.0.tar.xz".into()), - download_url: "https://ziglang.org/download/0.11.0/zig-macos-x86_64-0.11.0.tar.xz" + download_name: Some("zig-x86_64-macos-0.14.1.tar.xz".into()), + download_url: "https://ziglang.org/download/0.14.1/zig-x86_64-macos-0.14.1.tar.xz" .into(), ..Default::default() } @@ -197,22 +197,22 @@ async fn supports_windows_arm64() { plugin .download_prebuilt(DownloadPrebuiltInput { context: ToolContext { - version: VersionSpec::parse("0.11.0").unwrap(), + version: VersionSpec::parse("0.14.1").unwrap(), ..Default::default() }, ..Default::default() }) .await, DownloadPrebuiltOutput { - archive_prefix: Some("zig-windows-aarch64-0.11.0".into()), + archive_prefix: Some("zig-aarch64-windows-0.14.1".into()), checksum_url: Some( - "https://ziglang.org/download/0.11.0/zig-windows-aarch64-0.11.0.zip.minisig".into() + "https://ziglang.org/download/0.14.1/zig-aarch64-windows-0.14.1.zip.minisig".into() ), checksum_public_key: Some( "RWSGOq2NVecA2UPNdBUZykf1CCb147pkmdtYxgb3Ti+JO/wCYvhbAb/U".into() ), - download_name: Some("zig-windows-aarch64-0.11.0.zip".into()), - download_url: "https://ziglang.org/download/0.11.0/zig-windows-aarch64-0.11.0.zip" + download_name: Some("zig-aarch64-windows-0.14.1.zip".into()), + download_url: "https://ziglang.org/download/0.14.1/zig-aarch64-windows-0.14.1.zip" .into(), ..Default::default() } @@ -232,22 +232,22 @@ async fn supports_windows_x64() { plugin .download_prebuilt(DownloadPrebuiltInput { context: ToolContext { - version: VersionSpec::parse("0.11.0").unwrap(), + version: VersionSpec::parse("0.14.1").unwrap(), ..Default::default() }, ..Default::default() }) .await, DownloadPrebuiltOutput { - archive_prefix: Some("zig-windows-x86_64-0.11.0".into()), + archive_prefix: Some("zig-x86_64-windows-0.14.1".into()), checksum_url: Some( - "https://ziglang.org/download/0.11.0/zig-windows-x86_64-0.11.0.zip.minisig".into() + "https://ziglang.org/download/0.14.1/zig-x86_64-windows-0.14.1.zip.minisig".into() ), checksum_public_key: Some( "RWSGOq2NVecA2UPNdBUZykf1CCb147pkmdtYxgb3Ti+JO/wCYvhbAb/U".into() ), - download_name: Some("zig-windows-x86_64-0.11.0.zip".into()), - download_url: "https://ziglang.org/download/0.11.0/zig-windows-x86_64-0.11.0.zip" + download_name: Some("zig-x86_64-windows-0.14.1.zip".into()), + download_url: "https://ziglang.org/download/0.14.1/zig-x86_64-windows-0.14.1.zip" .into(), ..Default::default() } @@ -267,22 +267,58 @@ async fn supports_windows_x86() { plugin .download_prebuilt(DownloadPrebuiltInput { context: ToolContext { - version: VersionSpec::parse("0.11.0").unwrap(), + version: VersionSpec::parse("0.14.1").unwrap(), ..Default::default() }, ..Default::default() }) .await, DownloadPrebuiltOutput { - archive_prefix: Some("zig-windows-x86-0.11.0".into()), + archive_prefix: Some("zig-x86-windows-0.14.1".into()), checksum_url: Some( - "https://ziglang.org/download/0.11.0/zig-windows-x86-0.11.0.zip.minisig".into() + "https://ziglang.org/download/0.14.1/zig-x86-windows-0.14.1.zip.minisig".into() ), checksum_public_key: Some( "RWSGOq2NVecA2UPNdBUZykf1CCb147pkmdtYxgb3Ti+JO/wCYvhbAb/U".into() ), - download_name: Some("zig-windows-x86-0.11.0.zip".into()), - download_url: "https://ziglang.org/download/0.11.0/zig-windows-x86-0.11.0.zip".into(), + download_name: Some("zig-x86-windows-0.14.1.zip".into()), + download_url: "https://ziglang.org/download/0.14.1/zig-x86-windows-0.14.1.zip".into(), + ..Default::default() + } + ); +} + +#[tokio::test(flavor = "multi_thread")] +async fn supports_v0_14_0_and_below() { + let sandbox = create_empty_proto_sandbox(); + let plugin = sandbox + .create_plugin_with_config("zig-test", |config| { + config.host(HostOS::Linux, HostArch::Arm64); + }) + .await; + + assert_eq!( + plugin + .download_prebuilt(DownloadPrebuiltInput { + context: ToolContext { + version: VersionSpec::parse("0.14.0").unwrap(), + ..Default::default() + }, + ..Default::default() + }) + .await, + DownloadPrebuiltOutput { + archive_prefix: Some("zig-linux-aarch64-0.14.0".into()), + checksum_url: Some( + "https://ziglang.org/download/0.14.0/zig-linux-aarch64-0.14.0.tar.xz.minisig" + .into() + ), + checksum_public_key: Some( + "RWSGOq2NVecA2UPNdBUZykf1CCb147pkmdtYxgb3Ti+JO/wCYvhbAb/U".into() + ), + download_name: Some("zig-linux-aarch64-0.14.0.tar.xz".into()), + download_url: "https://ziglang.org/download/0.14.0/zig-linux-aarch64-0.14.0.tar.xz" + .into(), ..Default::default() } ); @@ -301,7 +337,7 @@ async fn locates_unix_bin() { plugin .locate_executables(LocateExecutablesInput { context: ToolContext { - version: VersionSpec::parse("0.11.0").unwrap(), + version: VersionSpec::parse("0.14.1").unwrap(), ..Default::default() }, ..Default::default() @@ -328,7 +364,7 @@ async fn locates_windows_bin() { plugin .locate_executables(LocateExecutablesInput { context: ToolContext { - version: VersionSpec::parse("0.11.0").unwrap(), + version: VersionSpec::parse("0.14.1").unwrap(), ..Default::default() }, ..Default::default() diff --git a/tests/versions_test.rs b/tests/versions_test.rs index adfd00f..03d1266 100644 --- a/tests/versions_test.rs +++ b/tests/versions_test.rs @@ -1,9 +1,9 @@ use proto_pdk_test_utils::*; generate_resolve_versions_tests!("zig-test", { - "0.10" => "0.10.1", - "0.11.0" => "0.11.0", - "0" => "0.14.0", + "0.14" => "0.14.1", + "0.14.0" => "0.14.0", + "0" => "0.14.1", }); #[tokio::test(flavor = "multi_thread")]