package config import ( "os" "path/filepath" "testing" "banger/internal/paths" ) func TestLoadDerivesArtifactPathsFromRuntimeDir(t *testing.T) { runtimeDir := t.TempDir() for _, rel := range []string{ "firecracker", "id_ed25519", "namegen", "customize.sh", "packages.apt", "rootfs-docker.ext4", "wtf/root/boot/vmlinux-6.8.0-94-generic", "wtf/root/boot/initrd.img-6.8.0-94-generic", "wtf/root/lib/modules/6.8.0-94-generic/modules.dep", } { path := filepath.Join(runtimeDir, rel) if err := os.MkdirAll(filepath.Dir(path), 0o755); err != nil { t.Fatalf("mkdir %s: %v", filepath.Dir(path), err) } if err := os.WriteFile(path, []byte("test"), 0o644); err != nil { t.Fatalf("write %s: %v", path, err) } } t.Setenv("BANGER_RUNTIME_DIR", runtimeDir) cfg, err := Load(paths.Layout{ConfigDir: t.TempDir()}) if err != nil { t.Fatalf("Load: %v", err) } if cfg.RuntimeDir != runtimeDir { t.Fatalf("RuntimeDir = %q, want %q", cfg.RuntimeDir, runtimeDir) } if cfg.FirecrackerBin != filepath.Join(runtimeDir, "firecracker") { t.Fatalf("FirecrackerBin = %q", cfg.FirecrackerBin) } if cfg.SSHKeyPath != filepath.Join(runtimeDir, "id_ed25519") { t.Fatalf("SSHKeyPath = %q", cfg.SSHKeyPath) } if cfg.NamegenPath != filepath.Join(runtimeDir, "namegen") { t.Fatalf("NamegenPath = %q", cfg.NamegenPath) } if cfg.CustomizeScript != filepath.Join(runtimeDir, "customize.sh") { t.Fatalf("CustomizeScript = %q", cfg.CustomizeScript) } if cfg.DefaultRootfs != filepath.Join(runtimeDir, "rootfs-docker.ext4") { t.Fatalf("DefaultRootfs = %q", cfg.DefaultRootfs) } if cfg.DefaultBaseRootfs != filepath.Join(runtimeDir, "rootfs-docker.ext4") { t.Fatalf("DefaultBaseRootfs = %q", cfg.DefaultBaseRootfs) } if cfg.DefaultKernel != filepath.Join(runtimeDir, "wtf/root/boot/vmlinux-6.8.0-94-generic") { t.Fatalf("DefaultKernel = %q", cfg.DefaultKernel) } if cfg.DefaultInitrd != filepath.Join(runtimeDir, "wtf/root/boot/initrd.img-6.8.0-94-generic") { t.Fatalf("DefaultInitrd = %q", cfg.DefaultInitrd) } if cfg.DefaultModulesDir != filepath.Join(runtimeDir, "wtf/root/lib/modules/6.8.0-94-generic") { t.Fatalf("DefaultModulesDir = %q", cfg.DefaultModulesDir) } if cfg.DefaultPackagesFile != filepath.Join(runtimeDir, "packages.apt") { t.Fatalf("DefaultPackagesFile = %q", cfg.DefaultPackagesFile) } }