2016-04-11 18:15:53 +00:00
|
|
|
package expander
|
|
|
|
|
|
|
|
import (
|
|
|
|
"testing"
|
|
|
|
|
|
|
|
"github.com/franela/goblin"
|
|
|
|
)
|
|
|
|
|
|
|
|
func TestSubstitution(t *testing.T) {
|
|
|
|
|
|
|
|
g := goblin.Goblin(t)
|
|
|
|
g.Describe("Parameter Substitution", func() {
|
|
|
|
|
|
|
|
g.It("Should substitute simple parameters", func() {
|
|
|
|
before := "echo ${GREETING} WORLD"
|
|
|
|
after := "echo HELLO WORLD"
|
|
|
|
g.Assert(substitute(before, "GREETING", "HELLO")).Equal(after)
|
|
|
|
})
|
|
|
|
|
|
|
|
g.It("Should substitute quoted parameters", func() {
|
|
|
|
before := "echo \"${GREETING}\" WORLD"
|
|
|
|
after := "echo \"HELLO\" WORLD"
|
|
|
|
g.Assert(substituteQ(before, "GREETING", "HELLO")).Equal(after)
|
|
|
|
})
|
|
|
|
|
|
|
|
g.It("Should substitute parameters and trim prefix", func() {
|
|
|
|
before := "echo ${GREETING##asdf} WORLD"
|
|
|
|
after := "echo HELLO WORLD"
|
|
|
|
g.Assert(substitutePrefix(before, "GREETING", "asdfHELLO")).Equal(after)
|
|
|
|
})
|
|
|
|
|
|
|
|
g.It("Should substitute parameters and trim suffix", func() {
|
|
|
|
before := "echo ${GREETING%%asdf} WORLD"
|
|
|
|
after := "echo HELLO WORLD"
|
|
|
|
g.Assert(substituteSuffix(before, "GREETING", "HELLOasdf")).Equal(after)
|
|
|
|
})
|
|
|
|
|
|
|
|
g.It("Should substitute parameters without using the default", func() {
|
|
|
|
before := "echo ${GREETING=HOLA} WORLD"
|
|
|
|
after := "echo HELLO WORLD"
|
|
|
|
g.Assert(substituteDefault(before, "GREETING", "HELLO")).Equal(after)
|
|
|
|
})
|
|
|
|
|
|
|
|
g.It("Should substitute parameters using the a default", func() {
|
|
|
|
before := "echo ${GREETING=HOLA} WORLD"
|
|
|
|
after := "echo HOLA WORLD"
|
|
|
|
g.Assert(substituteDefault(before, "GREETING", "")).Equal(after)
|
|
|
|
})
|
|
|
|
|
|
|
|
g.It("Should substitute parameters with replacement", func() {
|
|
|
|
before := "echo ${GREETING/HE/A} MONDE"
|
|
|
|
after := "echo ALLO MONDE"
|
|
|
|
g.Assert(substituteReplace(before, "GREETING", "HELLO")).Equal(after)
|
|
|
|
})
|
|
|
|
|
2016-07-09 17:37:13 +00:00
|
|
|
g.It("Should substitute parameters with replacement, containing slashes", func() {
|
|
|
|
before := `echo ${GREETING/HE\//A} MONDE`
|
|
|
|
after := "echo ALLO MONDE"
|
|
|
|
g.Assert(substituteReplace(before, "GREETING", "HE/LLO")).Equal(after)
|
|
|
|
})
|
|
|
|
|
2016-04-11 18:15:53 +00:00
|
|
|
g.It("Should substitute parameters with left substr", func() {
|
|
|
|
before := "echo ${FOO:4} IS COOL"
|
|
|
|
after := "echo THIS IS COOL"
|
|
|
|
g.Assert(substituteLeft(before, "FOO", "THIS IS A REALLY LONG STRING")).Equal(after)
|
|
|
|
})
|
|
|
|
|
|
|
|
g.It("Should substitute parameters with substr", func() {
|
|
|
|
before := "echo ${FOO:8:5} IS COOL"
|
|
|
|
after := "echo DRONE IS COOL"
|
|
|
|
g.Assert(substituteSubstr(before, "FOO", "THIS IS DRONE CI")).Equal(after)
|
|
|
|
})
|
|
|
|
})
|
|
|
|
}
|