Blame internal/blueprint/blueprint_test.go

Packit 63bb0d
package blueprint
Packit 63bb0d
Packit 63bb0d
import (
Packit 63bb0d
	"testing"
Packit 63bb0d
Packit 63bb0d
	"github.com/stretchr/testify/assert"
Packit 63bb0d
	"github.com/stretchr/testify/require"
Packit 63bb0d
)
Packit 63bb0d
Packit 63bb0d
func TestDeepCopy(t *testing.T) {
Packit 63bb0d
	bpOrig := Blueprint{
Packit 63bb0d
		Name:        "deepcopy-test",
Packit 63bb0d
		Description: "Testing DeepCopy function",
Packit 63bb0d
		Version:     "0.0.1",
Packit 63bb0d
		Packages: []Package{
Packit 63bb0d
			{Name: "dep-package1", Version: "*"}},
Packit 63bb0d
		Modules: []Package{
Packit 63bb0d
			{Name: "dep-package2", Version: "*"}},
Packit 63bb0d
	}
Packit 63bb0d
Packit 63bb0d
	bpCopy := bpOrig.DeepCopy()
Packit 63bb0d
	require.Equalf(t, bpOrig, bpCopy, "Blueprints.DeepCopy is different from original.")
Packit 63bb0d
Packit 63bb0d
	// Modify the copy
Packit 63bb0d
	bpCopy.Packages[0].Version = "1.2.3"
Packit 63bb0d
	require.Equalf(t, bpOrig.Packages[0].Version, "*", "Blueprint.DeepCopy failed, original modified")
Packit 63bb0d
Packit 63bb0d
	// Modify the original
Packit 63bb0d
	bpOrig.Packages[0].Version = "42.0"
Packit 63bb0d
	require.Equalf(t, bpCopy.Packages[0].Version, "1.2.3", "Blueprint.DeepCopy failed, copy modified.")
Packit 63bb0d
}
Packit 63bb0d
Packit 63bb0d
func TestBlueprintInitialize(t *testing.T) {
Packit 63bb0d
	cases := []struct {
Packit 63bb0d
		NewBlueprint  Blueprint
Packit 63bb0d
		ExpectedError bool
Packit 63bb0d
	}{
Packit 63bb0d
		{Blueprint{Name: "bp-test-1", Description: "Empty version", Version: ""}, false},
Packit 63bb0d
		{Blueprint{Name: "bp-test-2", Description: "Invalid version 1", Version: "0"}, true},
Packit 63bb0d
		{Blueprint{Name: "bp-test-2", Description: "Invalid version 2", Version: "0.0"}, true},
Packit 63bb0d
		{Blueprint{Name: "bp-test-3", Description: "Invalid version 3", Version: "0.0.0.0"}, true},
Packit 63bb0d
		{Blueprint{Name: "bp-test-4", Description: "Invalid version 4", Version: "0.a.0"}, true},
Packit 63bb0d
		{Blueprint{Name: "bp-test-5", Description: "Invalid version 5", Version: "foo"}, true},
Packit 63bb0d
		{Blueprint{Name: "bp-test-7", Description: "Zero version", Version: "0.0.0"}, false},
Packit 63bb0d
		{Blueprint{Name: "bp-test-8", Description: "X.Y.Z version", Version: "2.1.3"}, false},
Packit 63bb0d
	}
Packit 63bb0d
Packit 63bb0d
	for _, c := range cases {
Packit 63bb0d
		bp := c.NewBlueprint
Packit 63bb0d
		err := bp.Initialize()
Packit 63bb0d
		assert.Equalf(t, (err != nil), c.ExpectedError, "Initialize(%#v) returnted an unexpected error: %#v", c.NewBlueprint, err)
Packit 63bb0d
	}
Packit 63bb0d
}
Packit 63bb0d
Packit 63bb0d
func TestBumpVersion(t *testing.T) {
Packit 63bb0d
	cases := []struct {
Packit 63bb0d
		NewBlueprint    Blueprint
Packit 63bb0d
		OldVersion      string
Packit 63bb0d
		ExpectedVersion string
Packit 63bb0d
	}{
Packit 63bb0d
		{Blueprint{Name: "bp-test-1", Description: "Empty version", Version: "0.0.1"}, "", "0.0.1"},
Packit 63bb0d
		{Blueprint{Name: "bp-test-2", Description: "Invalid version 1", Version: "0.0.1"}, "0", "0.0.1"},
Packit 63bb0d
		{Blueprint{Name: "bp-test-3", Description: "Invalid version 2", Version: "0.0.1"}, "0.0.0.0", "0.0.1"},
Packit 63bb0d
		{Blueprint{Name: "bp-test-4", Description: "Invalid version 3", Version: "0.0.1"}, "0.a.0", "0.0.1"},
Packit 63bb0d
		{Blueprint{Name: "bp-test-5", Description: "Invalid version 4", Version: "0.0.1"}, "foo", "0.0.1"},
Packit 63bb0d
		{Blueprint{Name: "bp-test-6", Description: "Invalid version 5", Version: "0.0.1"}, "0.0", "0.0.1"},
Packit 63bb0d
		{Blueprint{Name: "bp-test-8", Description: "Same version", Version: "4.2.0"}, "4.2.0", "4.2.1"},
Packit 63bb0d
	}
Packit 63bb0d
Packit 63bb0d
	for _, c := range cases {
Packit 63bb0d
		bp := c.NewBlueprint
Packit 63bb0d
		err := bp.Initialize()
Packit 63bb0d
		require.NoError(t, err)
Packit 63bb0d
Packit 63bb0d
		bp.BumpVersion(c.OldVersion)
Packit 63bb0d
		assert.Equalf(t, c.ExpectedVersion, bp.Version, "BumpVersion(%#v) is expected to return %#v, but instead returned %#v.", c.OldVersion, c.ExpectedVersion, bp.Version)
Packit 63bb0d
	}
Packit 63bb0d
}
Packit 63bb0d
Packit 63bb0d
func TestGetPackages(t *testing.T) {
Packit 63bb0d
Packit 63bb0d
	bp := Blueprint{
Packit 63bb0d
		Name:        "packages-test",
Packit 63bb0d
		Description: "Testing GetPackages function",
Packit 63bb0d
		Version:     "0.0.1",
Packit 63bb0d
		Packages: []Package{
Packit 63bb0d
			{Name: "tmux", Version: "1.2"}},
Packit 63bb0d
		Modules: []Package{
Packit 63bb0d
			{Name: "openssh-server", Version: "*"}},
Packit 63bb0d
		Groups: []Group{
Packit 63bb0d
			{Name: "anaconda-tools"}},
Packit 63bb0d
	}
Packit 63bb0d
	Received_packages := bp.GetPackages()
Packit Service bcdfb1
	assert.ElementsMatch(t, []string{"tmux-1.2", "openssh-server", "@anaconda-tools", "kernel"}, Received_packages)
Packit Service bcdfb1
}
Packit Service bcdfb1
Packit Service bcdfb1
func TestKernelNameCustomization(t *testing.T) {
Packit Service bcdfb1
	kernels := []string{"kernel", "kernel-debug", "kernel-rt"}
Packit Service bcdfb1
Packit Service bcdfb1
	for _, k := range kernels {
Packit Service bcdfb1
		// kernel in customizations
Packit Service bcdfb1
		bp := Blueprint{
Packit Service bcdfb1
			Name:        "kernel-test",
Packit Service bcdfb1
			Description: "Testing GetPackages function with custom Kernel",
Packit Service bcdfb1
			Version:     "0.0.1",
Packit Service bcdfb1
			Packages: []Package{
Packit Service bcdfb1
				{Name: "tmux", Version: "1.2"}},
Packit Service bcdfb1
			Modules: []Package{
Packit Service bcdfb1
				{Name: "openssh-server", Version: "*"}},
Packit Service bcdfb1
			Groups: []Group{
Packit Service bcdfb1
				{Name: "anaconda-tools"}},
Packit Service bcdfb1
			Customizations: &Customizations{
Packit Service bcdfb1
				Kernel: &KernelCustomization{
Packit Service bcdfb1
					Name: k,
Packit Service bcdfb1
				},
Packit Service bcdfb1
			},
Packit Service bcdfb1
		}
Packit Service bcdfb1
		Received_packages := bp.GetPackages()
Packit Service bcdfb1
		assert.ElementsMatch(t, []string{"tmux-1.2", "openssh-server", "@anaconda-tools", k}, Received_packages)
Packit Service bcdfb1
	}
Packit Service bcdfb1
Packit Service bcdfb1
	for _, k := range kernels {
Packit Service bcdfb1
		// kernel in packages
Packit Service bcdfb1
		bp := Blueprint{
Packit Service bcdfb1
			Name:        "kernel-test",
Packit Service bcdfb1
			Description: "Testing GetPackages function with custom Kernel",
Packit Service bcdfb1
			Version:     "0.0.1",
Packit Service bcdfb1
			Packages: []Package{
Packit Service bcdfb1
				{Name: "tmux", Version: "1.2"},
Packit Service bcdfb1
				{Name: k},
Packit Service bcdfb1
			},
Packit Service bcdfb1
			Modules: []Package{
Packit Service bcdfb1
				{Name: "openssh-server", Version: "*"}},
Packit Service bcdfb1
			Groups: []Group{
Packit Service bcdfb1
				{Name: "anaconda-tools"}},
Packit Service bcdfb1
		}
Packit Service bcdfb1
		Received_packages := bp.GetPackages()
Packit Service bcdfb1
Packit Service bcdfb1
		// adds default kernel as well
Packit Service bcdfb1
		assert.ElementsMatch(t, []string{"tmux-1.2", k, "openssh-server", "@anaconda-tools", "kernel"}, Received_packages)
Packit Service bcdfb1
	}
Packit Service bcdfb1
Packit Service bcdfb1
	for _, bk := range kernels {
Packit Service bcdfb1
		for _, ck := range kernels {
Packit Service bcdfb1
			// all combos of both kernels
Packit Service bcdfb1
			bp := Blueprint{
Packit Service bcdfb1
				Name:        "kernel-test",
Packit Service bcdfb1
				Description: "Testing GetPackages function with custom Kernel",
Packit Service bcdfb1
				Version:     "0.0.1",
Packit Service bcdfb1
				Packages: []Package{
Packit Service bcdfb1
					{Name: "tmux", Version: "1.2"},
Packit Service bcdfb1
					{Name: bk},
Packit Service bcdfb1
				},
Packit Service bcdfb1
				Modules: []Package{
Packit Service bcdfb1
					{Name: "openssh-server", Version: "*"}},
Packit Service bcdfb1
				Groups: []Group{
Packit Service bcdfb1
					{Name: "anaconda-tools"}},
Packit Service bcdfb1
				Customizations: &Customizations{
Packit Service bcdfb1
					Kernel: &KernelCustomization{
Packit Service bcdfb1
						Name: ck,
Packit Service bcdfb1
					},
Packit Service bcdfb1
				},
Packit Service bcdfb1
			}
Packit Service bcdfb1
			Received_packages := bp.GetPackages()
Packit Service bcdfb1
			// both kernels are included, even if they're the same
Packit Service bcdfb1
			assert.ElementsMatch(t, []string{"tmux-1.2", bk, "openssh-server", "@anaconda-tools", ck}, Received_packages)
Packit Service bcdfb1
		}
Packit Service bcdfb1
	}
Packit 63bb0d
}