woodpecker/yaml/expander/expand_test.go
2016-04-19 13:02:28 -07:00

48 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))
})
})
}