blob: 2d7491b2013cbbfb33c88c2b7f4915cefb889c59 [file] [log] [blame]
Tim Windelschmidt6d33a432025-02-04 14:34:25 +01001// Copyright The Monogon Project Authors.
2// SPDX-License-Identifier: Apache-2.0
3
Serge Bazanskia42844a2024-05-16 18:06:19 +02004package qcow2
5
6import (
7 "fmt"
8 "os"
9 "os/exec"
10 "path/filepath"
11 "testing"
Serge Bazanskia42844a2024-05-16 18:06:19 +020012)
13
14// TestGenerate exercises the Generate function for a variety of image sizes.
15func TestGenerate(t *testing.T) {
Serge Bazanskia42844a2024-05-16 18:06:19 +020016 // Test all orders of magnitude from 1KiB to 1PiB.
17 for i := 20; i < 50; i++ {
18 t.Run(fmt.Sprintf("%d", 1<<i), func(t *testing.T) {
19 path := filepath.Join(t.TempDir(), "test.qcow2")
20
21 f, err := os.Create(path)
22 if err != nil {
23 t.Fatalf("Could not create test image file: %v", err)
24 }
25 if err := Generate(f, GenerateWithFileSize(1<<i)); err != nil {
26 t.Fatalf("Generate(%d bytes): %v", 1<<i, err)
27 }
28 if err := f.Close(); err != nil {
29 t.Fatalf("Close: %v", err)
30 }
31
Tim Windelschmidt492434a2024-10-22 14:29:55 +020032 cmd := exec.Command("qemu-img", "check", path)
Serge Bazanskia42844a2024-05-16 18:06:19 +020033 if err := cmd.Run(); err != nil {
34 t.Fatalf("qemu-img check failed: %v", err)
35 }
36 })
37 }
38}