package image import ( "crypto/sha256" "encoding/hex" "os" "os/exec" "path/filepath" "testing" ) func TestDownloadDecompressesXZFileURLs(t *testing.T) { if _, err := exec.LookPath("xz"); err != nil { t.Skip("xz not available") } dir := t.TempDir() raw := filepath.Join(dir, "base.img") if err := os.WriteFile(raw, []byte("metis-xz-test"), 0o644); err != nil { t.Fatal(err) } compressed := raw + ".xz" cmd := exec.Command("xz", "-zk", raw) if out, err := cmd.CombinedOutput(); err != nil { t.Fatalf("xz: %v: %s", err, string(out)) } dest := filepath.Join(dir, "copy.img") if err := Download("file://"+compressed, dest); err != nil { t.Fatalf("Download: %v", err) } sum := sha256.Sum256([]byte("metis-xz-test")) if err := VerifyChecksum(dest, "sha256:"+hex.EncodeToString(sum[:])); err != nil { t.Fatalf("VerifyChecksum: %v", err) } }