49 lines
1.1 KiB
Go
49 lines
1.1 KiB
Go
|
package expander
|
||
|
|
||
|
import (
|
||
|
"testing"
|
||
|
|
||
|
"github.com/franela/goblin"
|
||
|
)
|
||
|
|
||
|
func TestExpand(t *testing.T) {
|
||
|
|
||
|
g := goblin.Goblin(t)
|
||
|
g.Describe("Expand params", func() {
|
||
|
|
||
|
g.It("Should replace vars with ${key}", func() {
|
||
|
s := "echo ${FOO} $BAR"
|
||
|
m := map[string]string{}
|
||
|
m["FOO"] = "BAZ"
|
||
|
g.Assert("echo BAZ $BAR").Equal(ExpandString(s, m))
|
||
|
})
|
||
|
|
||
|
g.It("Should not replace vars in nil map", func() {
|
||
|
s := "echo ${FOO} $BAR"
|
||
|
g.Assert(s).Equal(ExpandString(s, nil))
|
||
|
})
|
||
|
|
||
|
g.It("Should escape quoted variables", func() {
|
||
|
s := `echo "${FOO}"`
|
||
|
m := map[string]string{}
|
||
|
m["FOO"] = "hello\nworld"
|
||
|
g.Assert(`echo "hello\nworld"`).Equal(ExpandString(s, m))
|
||
|
})
|
||
|
|
||
|
g.It("Should replace variable prefix", func() {
|
||
|
s := `tag: ${TAG=${SHA:8}}`
|
||
|
m := map[string]string{}
|
||
|
m["TAG"] = ""
|
||
|
m["SHA"] = "f36cbf54ee1a1eeab264c8e388f386218ab1701b"
|
||
|
g.Assert("tag: f36cbf54").Equal(ExpandString(s, m))
|
||
|
})
|
||
|
|
||
|
g.It("Should handle nested substitution operations", func() {
|
||
|
s := `echo "${TAG##v}"`
|
||
|
m := map[string]string{}
|
||
|
m["TAG"] = "v1.0.0"
|
||
|
g.Assert(`echo "1.0.0"`).Equal(ExpandString(s, m))
|
||
|
})
|
||
|
})
|
||
|
}
|