metis/pkg/image/download_test.go

35 lines
867 B
Go
Raw Normal View History

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)
}
}