mirror of https://github.com/containers/podman.git
Merge pull request #10193 from rhatdan/runlabel
Fix handling of runlabel IMAGE and NAME
This commit is contained in:
commit
ed6f399770
|
@ -180,13 +180,28 @@ func generateRunlabelCommand(runlabel string, img *libimage.Image, inputName str
|
||||||
}
|
}
|
||||||
|
|
||||||
func replaceName(arg, name string) string {
|
func replaceName(arg, name string) string {
|
||||||
|
if arg == "NAME" {
|
||||||
|
return name
|
||||||
|
}
|
||||||
|
|
||||||
newarg := strings.ReplaceAll(arg, "$NAME", 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 {
|
func replaceImage(arg, image string) string {
|
||||||
|
if arg == "IMAGE" {
|
||||||
|
return image
|
||||||
|
}
|
||||||
newarg := strings.ReplaceAll(arg, "$IMAGE", 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
|
// generateCommand takes a label (string) and converts it to an executable command
|
||||||
|
|
|
@ -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])
|
||||||
|
}
|
||||||
|
}
|
Loading…
Reference in New Issue