blob: cff77acdc5b38dd589919e9d79e9b0529becba4c [file] [log] [blame]
Serge Bazanskia42844a2024-05-16 18:06:19 +02001package qcow2
2
3import (
4 "fmt"
5 "os"
6 "os/exec"
7 "path/filepath"
8 "testing"
Serge Bazanskia42844a2024-05-16 18:06:19 +02009)
10
11// TestGenerate exercises the Generate function for a variety of image sizes.
12func TestGenerate(t *testing.T) {
Serge Bazanskia42844a2024-05-16 18:06:19 +020013 // Test all orders of magnitude from 1KiB to 1PiB.
14 for i := 20; i < 50; i++ {
15 t.Run(fmt.Sprintf("%d", 1<<i), func(t *testing.T) {
16 path := filepath.Join(t.TempDir(), "test.qcow2")
17
18 f, err := os.Create(path)
19 if err != nil {
20 t.Fatalf("Could not create test image file: %v", err)
21 }
22 if err := Generate(f, GenerateWithFileSize(1<<i)); err != nil {
23 t.Fatalf("Generate(%d bytes): %v", 1<<i, err)
24 }
25 if err := f.Close(); err != nil {
26 t.Fatalf("Close: %v", err)
27 }
28
Tim Windelschmidt492434a2024-10-22 14:29:55 +020029 cmd := exec.Command("qemu-img", "check", path)
Serge Bazanskia42844a2024-05-16 18:06:19 +020030 if err := cmd.Run(); err != nil {
31 t.Fatalf("qemu-img check failed: %v", err)
32 }
33 })
34 }
35}