mirror of
https://github.com/containers/podman.git
synced 2025-06-05 14:06:01 +08:00
Merge pull request #10193 from rhatdan/runlabel
Fix handling of runlabel IMAGE and NAME
This commit is contained in:
@ -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
|
||||
|
40
pkg/domain/infra/abi/containers_runlabel_test.go
Normal file
40
pkg/domain/infra/abi/containers_runlabel_test.go
Normal 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])
|
||||
}
|
||||
}
|
Reference in New Issue
Block a user