diff --git a/pkg/domain/infra/abi/containers_runlabel.go b/pkg/domain/infra/abi/containers_runlabel.go index 199ae43ad0..d448627dcd 100644 --- a/pkg/domain/infra/abi/containers_runlabel.go +++ b/pkg/domain/infra/abi/containers_runlabel.go @@ -180,13 +180,28 @@ func generateRunlabelCommand(runlabel string, img *libimage.Image, inputName str } func replaceName(arg, name string) string { + if arg == "NAME" { + return name + } + newarg := strings.ReplaceAll(arg, "$NAME", name) - return strings.ReplaceAll(newarg, "${NAME}", name) + newarg = strings.ReplaceAll(newarg, "${NAME}", name) + if strings.HasSuffix(newarg, "=NAME") { + newarg = strings.ReplaceAll(newarg, "=NAME", fmt.Sprintf("=%s", name)) + } + return newarg } func replaceImage(arg, image string) string { + if arg == "IMAGE" { + return image + } newarg := strings.ReplaceAll(arg, "$IMAGE", image) - return strings.ReplaceAll(newarg, "${IMAGE}", image) + newarg = strings.ReplaceAll(newarg, "${IMAGE}", image) + if strings.HasSuffix(newarg, "=IMAGE") { + newarg = strings.ReplaceAll(newarg, "=IMAGE", fmt.Sprintf("=%s", image)) + } + return newarg } // generateCommand takes a label (string) and converts it to an executable command diff --git a/pkg/domain/infra/abi/containers_runlabel_test.go b/pkg/domain/infra/abi/containers_runlabel_test.go new file mode 100644 index 0000000000..10f9ae0040 --- /dev/null +++ b/pkg/domain/infra/abi/containers_runlabel_test.go @@ -0,0 +1,40 @@ +package abi + +import ( + "testing" + + "github.com/stretchr/testify/assert" +) + +func TestReplaceName(t *testing.T) { + tests := [][]string{ + {"NAME=$NAME", "test1", "NAME=test1"}, + {"NAME=${NAME}", "test2", "NAME=test2"}, + {"NAME=NAME", "test3", "NAME=test3"}, + {"NAME=NAMEFOO", "test3", "NAME=NAMEFOO"}, + {"NAME", "test4", "test4"}, + {"FNAME", "test5", "FNAME"}, + {"NAME=foo", "test6", "NAME=foo"}, + {"This is my NAME", "test7", "This is my NAME"}, + } + for _, args := range tests { + val := replaceName(args[0], args[1]) + assert.Equal(t, val, args[2]) + } +} + +func TestReplaceImage(t *testing.T) { + tests := [][]string{ + {"IMAGE=$IMAGE", "test1", "IMAGE=test1"}, + {"IMAGE=${IMAGE}", "test2", "IMAGE=test2"}, + {"IMAGE=IMAGE", "test3", "IMAGE=test3"}, + {"IMAGE=IMAGEFOO", "test3", "IMAGE=IMAGEFOO"}, + {"IMAGE", "test4", "test4"}, + {"FIMAGE", "test5", "FIMAGE"}, + {"IMAGE=foo", "test6", "IMAGE=foo"}, + } + for _, args := range tests { + val := replaceImage(args[0], args[1]) + assert.Equal(t, val, args[2]) + } +}