Files
warewulf/internal/pkg/image/initramfs_test.go
Jonathon Anderson 94b2c3ba84 Add support for ubuntu-style dracut image names
Signed-off-by: Jonathon Anderson <janderson@ciq.com>
2025-02-25 17:01:26 -07:00

87 lines
2.2 KiB
Go

package image
import (
"os"
"path/filepath"
"testing"
"github.com/stretchr/testify/assert"
warewulfconf "github.com/warewulf/warewulf/internal/pkg/config"
"github.com/warewulf/warewulf/internal/pkg/testenv"
)
func TestFindInitramfs(t *testing.T) {
conf := warewulfconf.Get()
temp, err := os.MkdirTemp(os.TempDir(), "ww-conf-*")
assert.NoError(t, err)
defer os.RemoveAll(temp)
conf.Paths.WWChrootdir = temp
assert.NoError(t, os.MkdirAll(filepath.Join(RootFsDir("image"), "boot"), 0700))
tests := map[string]struct {
initramfs []string
ver string
path string
}{
"ok case 1": {
initramfs: []string{"/boot/initramfs-1.1.1.aarch64.img"},
ver: "1.1.1",
path: "/boot/initramfs-1.1.1.aarch64.img",
},
"ok case 2": {
initramfs: []string{"/boot/initrd-1.1.1.aarch64"},
ver: "1.1.1",
path: "/boot/initrd-1.1.1.aarch64",
},
"ok case 3": {
initramfs: []string{"/boot/initramfs-1.1.1.aarch64"},
ver: "1.1.1",
path: "/boot/initramfs-1.1.1.aarch64",
},
"ok case 4": {
initramfs: []string{"/boot/initrd-1.1.1.aarch64.img"},
ver: "1.1.1",
path: "/boot/initrd-1.1.1.aarch64.img",
},
"ok case 5 (ubuntu)": {
initramfs: []string{"/boot/initrd.img-6.11.0-18-generic"},
ver: "6.11.0-18",
path: "/boot/initrd.img-6.11.0-18-generic",
},
"prefix match": {
initramfs: []string{"/boot/initrd-1.1.1.aarch64.img"},
ver: "1.1",
path: "/boot/initrd-1.1.1.aarch64.img",
},
"error case, wrong init name": {
initramfs: []string{"/boot/initrr-1.1.1.aarch64.img"},
ver: "1.1.1",
path: "",
},
"error case, wrong ver": {
initramfs: []string{"/boot/initrd-1.1.1.aarch64.img"},
ver: "1.1.2",
path: "",
},
}
for name, tt := range tests {
t.Run(name, func(t *testing.T) {
env := testenv.New(t)
defer env.RemoveAll()
for _, init := range tt.initramfs {
env.CreateFile(filepath.Join("/var/lib/warewulf/chroots/image/rootfs", init))
}
initramfs := FindInitramfs("image", tt.ver)
if tt.path == "" {
assert.Nil(t, initramfs)
} else {
assert.NotNil(t, initramfs)
assert.Equal(t, tt.path, initramfs.Path)
}
})
}
}