Blame internal/distro/rhel84/distro_test.go

Packit Service 509fd4
package rhel84_test
Packit Service 509fd4
Packit Service 509fd4
import (
Packit Service 509fd4
	"testing"
Packit Service 509fd4
Packit Service bcdfb1
	"github.com/stretchr/testify/assert"
Packit Service bcdfb1
	"github.com/stretchr/testify/require"
Packit Service bcdfb1
Packit Service 509fd4
	"github.com/osbuild/osbuild-composer/internal/blueprint"
Packit Service bcdfb1
	"github.com/osbuild/osbuild-composer/internal/distro"
Packit Service 509fd4
	"github.com/osbuild/osbuild-composer/internal/distro/distro_test_common"
Packit Service 509fd4
	"github.com/osbuild/osbuild-composer/internal/distro/rhel84"
Packit Service 509fd4
)
Packit Service 509fd4
Packit Service bcdfb1
type rhelFamilyDistro struct {
Packit Service bcdfb1
	name   string
Packit Service bcdfb1
	distro distro.Distro
Packit Service bcdfb1
}
Packit Service bcdfb1
Packit Service bcdfb1
var rhelFamilyDistros = []rhelFamilyDistro{
Packit Service bcdfb1
	{
Packit Service bcdfb1
		name:   "rhel",
Packit Service bcdfb1
		distro: rhel84.New(),
Packit Service bcdfb1
	},
Packit Service bcdfb1
	{
Packit Service bcdfb1
		name:   "centos",
Packit Service bcdfb1
		distro: rhel84.NewCentos(),
Packit Service bcdfb1
	},
Packit Service bcdfb1
}
Packit Service bcdfb1
Packit Service 509fd4
func TestFilenameFromType(t *testing.T) {
Packit Service 509fd4
	type args struct {
Packit Service 509fd4
		outputFormat string
Packit Service 509fd4
	}
Packit Service 509fd4
	tests := []struct {
Packit Service 509fd4
		name    string
Packit Service 509fd4
		args    args
Packit Service 509fd4
		want    string
Packit Service 509fd4
		want1   string
Packit Service 509fd4
		wantErr bool
Packit Service 509fd4
	}{
Packit Service 509fd4
		{
Packit Service 509fd4
			name:  "ami",
Packit Service 509fd4
			args:  args{"ami"},
Packit Service 509fd4
			want:  "image.raw",
Packit Service 509fd4
			want1: "application/octet-stream",
Packit Service 509fd4
		},
Packit Service 509fd4
		{
Packit Service 509fd4
			name:  "openstack",
Packit Service 509fd4
			args:  args{"openstack"},
Packit Service 509fd4
			want:  "disk.qcow2",
Packit Service 509fd4
			want1: "application/x-qemu-disk",
Packit Service 509fd4
		},
Packit Service 509fd4
		{
Packit Service 509fd4
			name:  "qcow2",
Packit Service 509fd4
			args:  args{"qcow2"},
Packit Service 509fd4
			want:  "disk.qcow2",
Packit Service 509fd4
			want1: "application/x-qemu-disk",
Packit Service 509fd4
		},
Packit Service 509fd4
		{
Packit Service 509fd4
			name:  "tar",
Packit Service 509fd4
			args:  args{"tar"},
Packit Service 509fd4
			want:  "root.tar.xz",
Packit Service 509fd4
			want1: "application/x-tar",
Packit Service 509fd4
		},
Packit Service 509fd4
Packit Service 509fd4
		{
Packit Service 509fd4
			name:  "vhd",
Packit Service 509fd4
			args:  args{"vhd"},
Packit Service 509fd4
			want:  "disk.vhd",
Packit Service 509fd4
			want1: "application/x-vhd",
Packit Service 509fd4
		},
Packit Service 509fd4
		{
Packit Service 509fd4
			name:  "vmdk",
Packit Service 509fd4
			args:  args{"vmdk"},
Packit Service 509fd4
			want:  "disk.vmdk",
Packit Service 509fd4
			want1: "application/x-vmdk",
Packit Service 509fd4
		},
Packit Service 509fd4
		{
Packit Service 509fd4
			name:    "invalid-output-type",
Packit Service 509fd4
			args:    args{"foobar"},
Packit Service 509fd4
			wantErr: true,
Packit Service 509fd4
		},
Packit Service 509fd4
	}
Packit Service bcdfb1
	for _, dist := range rhelFamilyDistros {
Packit Service bcdfb1
		t.Run(dist.name, func(t *testing.T) {
Packit Service bcdfb1
			for _, tt := range tests {
Packit Service bcdfb1
				t.Run(tt.name, func(t *testing.T) {
Packit Service bcdfb1
					dist := dist.distro
Packit Service bcdfb1
					arch, _ := dist.GetArch("x86_64")
Packit Service bcdfb1
					imgType, err := arch.GetImageType(tt.args.outputFormat)
Packit Service bcdfb1
					if (err != nil) != tt.wantErr {
Packit Service bcdfb1
						t.Errorf("Arch.GetImageType() error = %v, wantErr %v", err, tt.wantErr)
Packit Service bcdfb1
						return
Packit Service bcdfb1
					}
Packit Service bcdfb1
					if !tt.wantErr {
Packit Service bcdfb1
						got := imgType.Filename()
Packit Service bcdfb1
						got1 := imgType.MIMEType()
Packit Service bcdfb1
						if got != tt.want {
Packit Service bcdfb1
							t.Errorf("ImageType.Filename()  got = %v, want %v", got, tt.want)
Packit Service bcdfb1
						}
Packit Service bcdfb1
						if got1 != tt.want1 {
Packit Service bcdfb1
							t.Errorf("ImageType.MIMEType() got1 = %v, want %v", got1, tt.want1)
Packit Service bcdfb1
						}
Packit Service bcdfb1
					}
Packit Service bcdfb1
				})
Packit Service bcdfb1
Packit Service 509fd4
			}
Packit Service 509fd4
		})
Packit Service 509fd4
	}
Packit Service 509fd4
}
Packit Service 509fd4
Packit Service 509fd4
func TestImageType_BuildPackages(t *testing.T) {
Packit Service 509fd4
	x8664BuildPackages := []string{
Packit Service 509fd4
		"dnf",
Packit Service 509fd4
		"dosfstools",
Packit Service 509fd4
		"e2fsprogs",
Packit Service 509fd4
		"grub2-efi-x64",
Packit Service 509fd4
		"grub2-pc",
Packit Service 509fd4
		"policycoreutils",
Packit Service 509fd4
		"shim-x64",
Packit Service 509fd4
		"systemd",
Packit Service 509fd4
		"tar",
Packit Service 509fd4
		"qemu-img",
Packit Service 509fd4
		"xz",
Packit Service 509fd4
	}
Packit Service 509fd4
	aarch64BuildPackages := []string{
Packit Service 509fd4
		"dnf",
Packit Service 509fd4
		"dosfstools",
Packit Service 509fd4
		"e2fsprogs",
Packit Service 509fd4
		"policycoreutils",
Packit Service 509fd4
		"qemu-img",
Packit Service 509fd4
		"systemd",
Packit Service 509fd4
		"tar",
Packit Service 509fd4
		"xz",
Packit Service 509fd4
	}
Packit Service 509fd4
	buildPackages := map[string][]string{
Packit Service 509fd4
		"x86_64":  x8664BuildPackages,
Packit Service 509fd4
		"aarch64": aarch64BuildPackages,
Packit Service 509fd4
		"ppc64le": nil,
Packit Service 509fd4
		"s390x":   nil,
Packit Service 509fd4
	}
Packit Service bcdfb1
	for _, dist := range rhelFamilyDistros {
Packit Service bcdfb1
		t.Run(dist.name, func(t *testing.T) {
Packit Service bcdfb1
			d := dist.distro
Packit Service bcdfb1
			for _, archLabel := range d.ListArches() {
Packit Service bcdfb1
				archStruct, err := d.GetArch(archLabel)
Packit Service bcdfb1
				if assert.NoErrorf(t, err, "d.GetArch(%v) returned err = %v; expected nil", archLabel, err) {
Packit Service bcdfb1
					continue
Packit Service bcdfb1
				}
Packit Service bcdfb1
				for _, itLabel := range archStruct.ListImageTypes() {
Packit Service bcdfb1
					itStruct, err := archStruct.GetImageType(itLabel)
Packit Service bcdfb1
					if assert.NoErrorf(t, err, "d.GetArch(%v) returned err = %v; expected nil", archLabel, err) {
Packit Service bcdfb1
						continue
Packit Service bcdfb1
					}
Packit Service 15f37d
					buildPkgs := itStruct.PackageSets(blueprint.Blueprint{})["build-packages"]
Packit Service 15f37d
					assert.NotNil(t, buildPkgs)
Packit Service 15f37d
					assert.ElementsMatch(t, buildPackages[archLabel], buildPkgs.Include)
Packit Service bcdfb1
				}
Packit Service 509fd4
			}
Packit Service bcdfb1
		})
Packit Service 509fd4
	}
Packit Service 509fd4
}
Packit Service 509fd4
Packit Service 509fd4
func TestImageType_Name(t *testing.T) {
Packit Service 509fd4
	imgMap := []struct {
Packit Service 509fd4
		arch     string
Packit Service 509fd4
		imgNames []string
Packit Service 509fd4
	}{
Packit Service 509fd4
		{
Packit Service 509fd4
			arch: "x86_64",
Packit Service 509fd4
			imgNames: []string{
Packit Service 509fd4
				"ami",
Packit Service 509fd4
				"qcow2",
Packit Service 509fd4
				"openstack",
Packit Service bcdfb1
				"rhel-edge-commit",
Packit Service 509fd4
				"tar",
Packit Service 509fd4
				"vhd",
Packit Service 509fd4
				"vmdk",
Packit Service 509fd4
			},
Packit Service 509fd4
		},
Packit Service 509fd4
		{
Packit Service 509fd4
			arch: "aarch64",
Packit Service 509fd4
			imgNames: []string{
Packit Service 509fd4
				"ami",
Packit Service 509fd4
				"qcow2",
Packit Service 509fd4
				"openstack",
Packit Service bcdfb1
				"rhel-edge-commit",
Packit Service 509fd4
				"tar",
Packit Service 509fd4
			},
Packit Service 509fd4
		},
Packit Service 509fd4
		{
Packit Service 509fd4
			arch: "ppc64le",
Packit Service 509fd4
			imgNames: []string{
Packit Service 509fd4
				"qcow2",
Packit Service 509fd4
				"tar",
Packit Service 509fd4
			},
Packit Service 509fd4
		},
Packit Service 509fd4
		{
Packit Service 509fd4
			arch: "s390x",
Packit Service 509fd4
			imgNames: []string{
Packit Service bcdfb1
				"qcow2",
Packit Service 509fd4
				"tar",
Packit Service 509fd4
			},
Packit Service 509fd4
		},
Packit Service 509fd4
	}
Packit Service bcdfb1
Packit Service bcdfb1
	for _, dist := range rhelFamilyDistros {
Packit Service bcdfb1
		t.Run(dist.name, func(t *testing.T) {
Packit Service bcdfb1
			for _, mapping := range imgMap {
Packit Service bcdfb1
				if mapping.arch == "s390x" && dist.name == "centos" {
Packit Service bcdfb1
					continue
Packit Service bcdfb1
				}
Packit Service bcdfb1
				arch, err := dist.distro.GetArch(mapping.arch)
Packit Service 509fd4
				if assert.NoError(t, err) {
Packit Service bcdfb1
					for _, imgName := range mapping.imgNames {
Packit Service bcdfb1
						if imgName == "rhel-edge-commit" && dist.name == "centos" {
Packit Service bcdfb1
							continue
Packit Service bcdfb1
						}
Packit Service bcdfb1
						imgType, err := arch.GetImageType(imgName)
Packit Service bcdfb1
						if assert.NoError(t, err) {
Packit Service bcdfb1
							assert.Equalf(t, imgName, imgType.Name(), "arch: %s", mapping.arch)
Packit Service bcdfb1
						}
Packit Service bcdfb1
					}
Packit Service 509fd4
				}
Packit Service 509fd4
			}
Packit Service bcdfb1
		})
Packit Service 509fd4
	}
Packit Service 509fd4
}
Packit Service 509fd4
Packit Service 509fd4
func TestImageType_Size(t *testing.T) {
Packit Service 509fd4
	const gigaByte = 1024 * 1024 * 1024
Packit Service 509fd4
	sizeMap := []struct {
Packit Service 509fd4
		name       string
Packit Service 509fd4
		inputSize  uint64
Packit Service 509fd4
		outputSize uint64
Packit Service 509fd4
	}{
Packit Service 509fd4
		{
Packit Service 509fd4
			name:       "ami",
Packit Service 509fd4
			inputSize:  6*gigaByte + 1,
Packit Service 509fd4
			outputSize: 6*gigaByte + 1,
Packit Service 509fd4
		},
Packit Service 509fd4
		{
Packit Service 509fd4
			name:       "ami",
Packit Service 509fd4
			inputSize:  0,
Packit Service 509fd4
			outputSize: 6 * gigaByte,
Packit Service 509fd4
		},
Packit Service 509fd4
		{
Packit Service 509fd4
			name:       "vhd",
Packit Service 509fd4
			inputSize:  10 * gigaByte,
Packit Service 509fd4
			outputSize: 10 * gigaByte,
Packit Service 509fd4
		},
Packit Service 509fd4
		{
Packit Service 509fd4
			name:       "vhd",
Packit Service 509fd4
			inputSize:  10*gigaByte - 1,
Packit Service 509fd4
			outputSize: 10 * gigaByte,
Packit Service 509fd4
		},
Packit Service 509fd4
	}
Packit Service 509fd4
Packit Service bcdfb1
	for _, dist := range rhelFamilyDistros {
Packit Service bcdfb1
		t.Run(dist.name, func(t *testing.T) {
Packit Service bcdfb1
			arch, err := dist.distro.GetArch("x86_64")
Packit Service 509fd4
			if assert.NoError(t, err) {
Packit Service bcdfb1
				for _, mapping := range sizeMap {
Packit Service bcdfb1
					imgType, err := arch.GetImageType(mapping.name)
Packit Service bcdfb1
					if assert.NoError(t, err) {
Packit Service bcdfb1
						size := imgType.Size(mapping.inputSize)
Packit Service bcdfb1
						assert.Equalf(t, mapping.outputSize, size, "Image type: %s, input size: %d, expected: %d, got: %d",
Packit Service bcdfb1
							mapping.name, mapping.inputSize, mapping.outputSize, size)
Packit Service bcdfb1
					}
Packit Service bcdfb1
				}
Packit Service 509fd4
			}
Packit Service bcdfb1
		})
Packit Service 509fd4
	}
Packit Service 509fd4
}
Packit Service 509fd4
Packit Service 509fd4
func TestImageType_BasePackages(t *testing.T) {
Packit Service 509fd4
	pkgMaps := []struct {
Packit Service bcdfb1
		name                 string
Packit Service bcdfb1
		basePackages         []string
Packit Service bcdfb1
		bootloaderPackages   []string
Packit Service bcdfb1
		excludedPackages     []string
Packit Service bcdfb1
		bootable             bool
Packit Service bcdfb1
		rhelOnlyBasePackages []string
Packit Service 509fd4
	}{
Packit Service 509fd4
		{
Packit Service 509fd4
			name: "ami",
Packit Service 509fd4
			basePackages: []string{
Packit Service 509fd4
				"checkpolicy",
Packit Service 509fd4
				"chrony",
Packit Service 509fd4
				"cloud-init",
Packit Service 509fd4
				"cloud-init",
Packit Service 509fd4
				"cloud-utils-growpart",
Packit Service 509fd4
				"@core",
Packit Service 509fd4
				"dhcp-client",
Packit Service 509fd4
				"gdisk",
Packit Service 509fd4
				"langpacks-en",
Packit Service 509fd4
				"net-tools",
Packit Service 509fd4
				"NetworkManager",
Packit Service 509fd4
				"redhat-release",
Packit Service 509fd4
				"redhat-release-eula",
Packit Service 509fd4
				"rsync",
Packit Service 509fd4
				"selinux-policy-targeted",
Packit Service 509fd4
				"tar",
Packit Service 509fd4
				"yum-utils",
Packit Service bcdfb1
Packit Service bcdfb1
				// Default from Blueprint
Packit Service bcdfb1
				"kernel",
Packit Service 509fd4
			},
Packit Service 509fd4
			bootloaderPackages: []string{
Packit Service 509fd4
				"dracut-config-generic",
Packit Service 509fd4
				"grub2-pc",
Packit Service 509fd4
				"grub2-efi-x64",
Packit Service 509fd4
				"shim-x64",
Packit Service 509fd4
			},
Packit Service 509fd4
			excludedPackages: []string{
Packit Service 509fd4
				"aic94xx-firmware",
Packit Service 509fd4
				"alsa-firmware",
Packit Service 509fd4
				"alsa-lib",
Packit Service 509fd4
				"alsa-tools-firmware",
Packit Service 509fd4
				"biosdevname",
Packit Service 509fd4
				"dracut-config-rescue",
Packit Service 509fd4
				"firewalld",
Packit Service 509fd4
				"iprutils",
Packit Service 509fd4
				"ivtv-firmware",
Packit Service 509fd4
				"iwl1000-firmware",
Packit Service 509fd4
				"iwl100-firmware",
Packit Service 509fd4
				"iwl105-firmware",
Packit Service 509fd4
				"iwl135-firmware",
Packit Service 509fd4
				"iwl2000-firmware",
Packit Service 509fd4
				"iwl2030-firmware",
Packit Service 509fd4
				"iwl3160-firmware",
Packit Service 509fd4
				"iwl3945-firmware",
Packit Service 509fd4
				"iwl4965-firmware",
Packit Service 509fd4
				"iwl5000-firmware",
Packit Service 509fd4
				"iwl5150-firmware",
Packit Service 509fd4
				"iwl6000-firmware",
Packit Service 509fd4
				"iwl6000g2a-firmware",
Packit Service 509fd4
				"iwl6000g2b-firmware",
Packit Service 509fd4
				"iwl6050-firmware",
Packit Service 509fd4
				"iwl7260-firmware",
Packit Service 509fd4
				"libertas-sd8686-firmware",
Packit Service 509fd4
				"libertas-sd8787-firmware",
Packit Service 509fd4
				"libertas-usb8388-firmware",
Packit Service 509fd4
				"plymouth",
Packit Service 509fd4
				"rng-tools",
Packit Service 509fd4
Packit Service 509fd4
				// TODO this cannot be removed, because the kernel (?)
Packit Service 509fd4
				// depends on it. The ec2 kickstart force-removes it.
Packit Service 509fd4
				// "linux-firmware",
Packit Service 509fd4
Packit Service 509fd4
				// TODO setfiles failes because of usr/sbin/timedatex. Exlude until
Packit Service 509fd4
				// https://errata.devel.redhat.com/advisory/47339 lands
Packit Service 509fd4
				"timedatex",
Packit Service 509fd4
			},
Packit Service 509fd4
			bootable: true,
Packit Service bcdfb1
			rhelOnlyBasePackages: []string{
Packit Service bcdfb1
				"insights-client",
Packit Service bcdfb1
			},
Packit Service 509fd4
		},
Packit Service 509fd4
		{
Packit Service 509fd4
			name: "openstack",
Packit Service 509fd4
			basePackages: []string{
Packit Service 509fd4
				// Defaults
Packit Service 509fd4
				"@Core",
Packit Service 509fd4
				"langpacks-en",
Packit Service 509fd4
				// From the lorax kickstart
Packit Service 509fd4
				"selinux-policy-targeted",
Packit Service 509fd4
				"cloud-init",
Packit Service 509fd4
				"qemu-guest-agent",
Packit Service 509fd4
				"spice-vdagent",
Packit Service bcdfb1
Packit Service bcdfb1
				// Default from Blueprint
Packit Service bcdfb1
				"kernel",
Packit Service 509fd4
			},
Packit Service 509fd4
			bootloaderPackages: []string{
Packit Service 509fd4
				"dracut-config-generic",
Packit Service 509fd4
				"grub2-pc",
Packit Service 509fd4
				"grub2-efi-x64",
Packit Service 509fd4
				"shim-x64",
Packit Service 509fd4
			},
Packit Service 509fd4
			excludedPackages: []string{
Packit Service 509fd4
				"dracut-config-rescue",
Packit Service 509fd4
				"rng-tools",
Packit Service 509fd4
			},
Packit Service 509fd4
			bootable: true,
Packit Service 509fd4
		},
Packit Service 509fd4
	}
Packit Service bcdfb1
Packit Service bcdfb1
	for _, dist := range rhelFamilyDistros {
Packit Service bcdfb1
		t.Run(dist.name, func(t *testing.T) {
Packit Service bcdfb1
			arch, err := dist.distro.GetArch("x86_64")
Packit Service bcdfb1
			assert.NoError(t, err)
Packit Service bcdfb1
Packit Service bcdfb1
			for _, pkgMap := range pkgMaps {
Packit Service bcdfb1
				imgType, err := arch.GetImageType(pkgMap.name)
Packit Service bcdfb1
				assert.NoError(t, err)
Packit Service 15f37d
				packages := imgType.PackageSets(blueprint.Blueprint{})["packages"]
Packit Service 15f37d
				assert.NotNil(t, packages)
Packit Service bcdfb1
				expectedPackages := append(pkgMap.basePackages, pkgMap.bootloaderPackages...)
Packit Service bcdfb1
				if dist.name == "rhel" {
Packit Service bcdfb1
					expectedPackages = append(expectedPackages, pkgMap.rhelOnlyBasePackages...)
Packit Service bcdfb1
				}
Packit Service bcdfb1
				assert.ElementsMatchf(
Packit Service bcdfb1
					t,
Packit Service bcdfb1
					expectedPackages,
Packit Service 15f37d
					packages.Include,
Packit Service bcdfb1
					"image type: %s",
Packit Service bcdfb1
					pkgMap.name,
Packit Service bcdfb1
				)
Packit Service 15f37d
				assert.Equalf(t, pkgMap.excludedPackages, packages.Exclude, "image type: %s", pkgMap.name)
Packit Service bcdfb1
			}
Packit Service bcdfb1
		})
Packit Service 509fd4
	}
Packit Service 509fd4
}
Packit Service 509fd4
Packit Service 509fd4
func TestDistro_Manifest(t *testing.T) {
Packit Service 509fd4
	distro_test_common.TestDistro_Manifest(t, "../../../test/data/manifests/", "rhel_84*", rhel84.New())
Packit Service bcdfb1
	distro_test_common.TestDistro_Manifest(t, "../../../test/data/manifests/", "centos_8*", rhel84.NewCentos())
Packit Service bcdfb1
}
Packit Service bcdfb1
Packit Service bcdfb1
// Check that Manifest() function returns an error for unsupported
Packit Service bcdfb1
// configurations.
Packit Service bcdfb1
func TestDistro_ManifestError(t *testing.T) {
Packit Service bcdfb1
	// Currently, the only unsupported configuration is OSTree commit types
Packit Service bcdfb1
	// with Kernel boot options
Packit Service bcdfb1
	r8distro := rhel84.New()
Packit Service bcdfb1
	bp := blueprint.Blueprint{
Packit Service bcdfb1
		Customizations: &blueprint.Customizations{
Packit Service bcdfb1
			Kernel: &blueprint.KernelCustomization{
Packit Service bcdfb1
				Append: "debug",
Packit Service bcdfb1
			},
Packit Service bcdfb1
		},
Packit Service bcdfb1
	}
Packit Service bcdfb1
Packit Service bcdfb1
	for _, archName := range r8distro.ListArches() {
Packit Service bcdfb1
		arch, _ := r8distro.GetArch(archName)
Packit Service bcdfb1
		for _, imgTypeName := range arch.ListImageTypes() {
Packit Service bcdfb1
			if archName == "s390x" && imgTypeName == "tar" {
Packit Service bcdfb1
				// broken arch-imgType combination; see
Packit Service bcdfb1
				// https://github.com/osbuild/osbuild-composer/issues/1220
Packit Service bcdfb1
				continue
Packit Service bcdfb1
			}
Packit Service bcdfb1
			imgType, _ := arch.GetImageType(imgTypeName)
Packit Service bcdfb1
			imgOpts := distro.ImageOptions{
Packit Service bcdfb1
				Size: imgType.Size(0),
Packit Service bcdfb1
			}
Packit Service 15f37d
			_, err := imgType.Manifest(bp.Customizations, imgOpts, nil, nil, 0)
Packit Service 15f37d
			if imgTypeName == "rhel-edge-commit" || imgTypeName == "rhel-edge-container" {
Packit Service bcdfb1
				assert.EqualError(t, err, "kernel boot parameter customizations are not supported for ostree types")
Packit Service 15f37d
			} else if imgTypeName == "rhel-edge-installer" {
Packit Service 15f37d
				assert.EqualError(t, err, "boot ISO image type \"rhel-edge-installer\" requires specifying a URL from which to retrieve the OSTree commit")
Packit Service bcdfb1
			} else {
Packit Service bcdfb1
				assert.NoError(t, err)
Packit Service bcdfb1
			}
Packit Service bcdfb1
		}
Packit Service bcdfb1
	}
Packit Service bcdfb1
}
Packit Service bcdfb1
Packit Service bcdfb1
func TestArchitecture_ListImageTypes(t *testing.T) {
Packit Service bcdfb1
	imgMap := []struct {
Packit Service bcdfb1
		arch                     string
Packit Service bcdfb1
		imgNames                 []string
Packit Service bcdfb1
		rhelAdditionalImageTypes []string
Packit Service bcdfb1
	}{
Packit Service bcdfb1
		{
Packit Service bcdfb1
			arch: "x86_64",
Packit Service bcdfb1
			imgNames: []string{
Packit Service bcdfb1
				"ami",
Packit Service bcdfb1
				"qcow2",
Packit Service bcdfb1
				"openstack",
Packit Service bcdfb1
				"tar",
Packit Service bcdfb1
				"vhd",
Packit Service bcdfb1
				"vmdk",
Packit Service bcdfb1
			},
Packit Service 15f37d
			rhelAdditionalImageTypes: []string{"rhel-edge-commit", "rhel-edge-container", "rhel-edge-installer"},
Packit Service bcdfb1
		},
Packit Service bcdfb1
		{
Packit Service bcdfb1
			arch: "aarch64",
Packit Service bcdfb1
			imgNames: []string{
Packit Service bcdfb1
				"ami",
Packit Service bcdfb1
				"qcow2",
Packit Service bcdfb1
				"openstack",
Packit Service bcdfb1
				"tar",
Packit Service bcdfb1
			},
Packit Service 15f37d
			rhelAdditionalImageTypes: []string{"rhel-edge-commit", "rhel-edge-container"},
Packit Service bcdfb1
		},
Packit Service bcdfb1
		{
Packit Service bcdfb1
			arch: "ppc64le",
Packit Service bcdfb1
			imgNames: []string{
Packit Service bcdfb1
				"qcow2",
Packit Service bcdfb1
				"tar",
Packit Service bcdfb1
			},
Packit Service bcdfb1
		},
Packit Service bcdfb1
		{
Packit Service bcdfb1
			arch: "s390x",
Packit Service bcdfb1
			imgNames: []string{
Packit Service bcdfb1
				"qcow2",
Packit Service bcdfb1
				"tar",
Packit Service bcdfb1
			},
Packit Service bcdfb1
		},
Packit Service bcdfb1
	}
Packit Service bcdfb1
Packit Service bcdfb1
	for _, dist := range rhelFamilyDistros {
Packit Service bcdfb1
		t.Run(dist.name, func(t *testing.T) {
Packit Service bcdfb1
			for _, mapping := range imgMap {
Packit Service bcdfb1
				if mapping.arch == "s390x" && dist.name == "centos" {
Packit Service bcdfb1
					continue
Packit Service bcdfb1
				}
Packit Service bcdfb1
				arch, err := dist.distro.GetArch(mapping.arch)
Packit Service bcdfb1
				require.NoError(t, err)
Packit Service bcdfb1
				imageTypes := arch.ListImageTypes()
Packit Service bcdfb1
Packit Service bcdfb1
				var expectedImageTypes []string
Packit Service bcdfb1
				expectedImageTypes = append(expectedImageTypes, mapping.imgNames...)
Packit Service bcdfb1
				if dist.name == "rhel" {
Packit Service bcdfb1
					expectedImageTypes = append(expectedImageTypes, mapping.rhelAdditionalImageTypes...)
Packit Service bcdfb1
				}
Packit Service bcdfb1
Packit Service bcdfb1
				require.ElementsMatch(t, expectedImageTypes, imageTypes)
Packit Service bcdfb1
			}
Packit Service bcdfb1
		})
Packit Service bcdfb1
	}
Packit Service 509fd4
}
Packit Service 509fd4
Packit Service 509fd4
func TestRhel84_ListArches(t *testing.T) {
Packit Service bcdfb1
	arches := rhel84.New().ListArches()
Packit Service 509fd4
	assert.Equal(t, []string{"aarch64", "ppc64le", "s390x", "x86_64"}, arches)
Packit Service 509fd4
}
Packit Service 509fd4
Packit Service bcdfb1
func TestCentos_ListArches(t *testing.T) {
Packit Service bcdfb1
	arches := rhel84.NewCentos().ListArches()
Packit Service bcdfb1
	assert.Equal(t, []string{"aarch64", "ppc64le", "x86_64"}, arches)
Packit Service bcdfb1
}
Packit Service bcdfb1
Packit Service 509fd4
func TestRhel84_GetArch(t *testing.T) {
Packit Service 509fd4
	arches := []struct {
Packit Service bcdfb1
		name                  string
Packit Service bcdfb1
		errorExpected         bool
Packit Service bcdfb1
		errorExpectedInCentos bool
Packit Service 509fd4
	}{
Packit Service 509fd4
		{
Packit Service 509fd4
			name: "x86_64",
Packit Service 509fd4
		},
Packit Service 509fd4
		{
Packit Service 509fd4
			name: "aarch64",
Packit Service 509fd4
		},
Packit Service 509fd4
		{
Packit Service 509fd4
			name: "ppc64le",
Packit Service 509fd4
		},
Packit Service 509fd4
		{
Packit Service bcdfb1
			name:                  "s390x",
Packit Service bcdfb1
			errorExpectedInCentos: true,
Packit Service 509fd4
		},
Packit Service 509fd4
		{
Packit Service 509fd4
			name:          "foo-arch",
Packit Service 509fd4
			errorExpected: true,
Packit Service 509fd4
		},
Packit Service 509fd4
	}
Packit Service 509fd4
Packit Service bcdfb1
	for _, dist := range rhelFamilyDistros {
Packit Service bcdfb1
		t.Run(dist.name, func(t *testing.T) {
Packit Service bcdfb1
			for _, a := range arches {
Packit Service bcdfb1
				actualArch, err := dist.distro.GetArch(a.name)
Packit Service bcdfb1
				if a.errorExpected || (a.errorExpectedInCentos && dist.name == "centos") {
Packit Service bcdfb1
					assert.Nil(t, actualArch)
Packit Service bcdfb1
					assert.Error(t, err)
Packit Service bcdfb1
				} else {
Packit Service bcdfb1
					assert.Equal(t, a.name, actualArch.Name())
Packit Service bcdfb1
					assert.NoError(t, err)
Packit Service bcdfb1
				}
Packit Service bcdfb1
			}
Packit Service bcdfb1
		})
Packit Service 509fd4
	}
Packit Service 509fd4
}
Packit Service 509fd4
Packit Service 509fd4
func TestRhel84_Name(t *testing.T) {
Packit Service 509fd4
	distro := rhel84.New()
Packit Service 509fd4
	assert.Equal(t, "rhel-84", distro.Name())
Packit Service 509fd4
}
Packit Service 509fd4
Packit Service bcdfb1
func TestCentos_Name(t *testing.T) {
Packit Service bcdfb1
	distro := rhel84.NewCentos()
Packit Service bcdfb1
	assert.Equal(t, "centos-8", distro.Name())
Packit Service bcdfb1
}
Packit Service bcdfb1
Packit Service 509fd4
func TestRhel84_ModulePlatformID(t *testing.T) {
Packit Service 509fd4
	distro := rhel84.New()
Packit Service 509fd4
	assert.Equal(t, "platform:el8", distro.ModulePlatformID())
Packit Service bcdfb1
Packit Service bcdfb1
	centos := rhel84.NewCentos()
Packit Service bcdfb1
	assert.Equal(t, "platform:el8", centos.ModulePlatformID())
Packit Service bcdfb1
}
Packit Service bcdfb1
Packit Service bcdfb1
func TestRhel84_KernelOption(t *testing.T) {
Packit Service bcdfb1
	distro_test_common.TestDistro_KernelOption(t, rhel84.New())
Packit Service 509fd4
}