Merge pull request #10193 from rhatdan/runlabel

Fix handling of runlabel IMAGE and NAME
This commit is contained in:
OpenShift Merge Robot
2021-05-05 16:47:59 -04:00
committed by GitHub
2 changed files with 57 additions and 2 deletions

View File

@ -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

View File

@ -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])
}
}