@@ -96,21 +96,28 @@ func TestEnv(t *testing.T) {
9696
9797func TestEnvsubst (t * testing.T ) {
9898 c := Context {}
99+ c .Setenv ("REPLACE" , "me" )
100+ for s , expected := range map [string ]string {
101+ "BEFORE${REPLACE}AFTER" : "BEFOREmeAFTER" ,
102+ "BEFORE${!REPLACE}AFTER" : "BEFORE${REPLACE}AFTER" ,
99103
100- if s , err := c .Envsubst ("start${example}end" ); s != "startend" || err != nil {
101- t .Fail ()
102- }
104+ "BEFORE${REPLACE:-default}AFTER" : "BEFOREmeAFTER" ,
105+ "BEFORE${!REPLACE:-default}AFTER" : "BEFORE${REPLACE:-default}AFTER" ,
103106
104- if s , err := c .Envsubst ("start${example:-default}end" ); s != "startdefaultend" || err != nil {
105- t .Fail ()
106- }
107+ "BEFORE${REPLACE/me/you}AFTER" : "BEFOREyouAFTER" ,
108+ "BEFORE${!REPLACE/me/you}AFTER" : "BEFORE${REPLACE/me/you}AFTER" ,
107109
108- c .Setenv ("example" , "value" )
109- if s , err := c .Envsubst ("start${example}end" ); s != "startvalueend" || err != nil {
110- t .Fail ()
111- }
112-
113- if s , err := c .Envsubst ("start${example:-default}end" ); s != "startvalueend" || err != nil {
114- t .Fail ()
110+ "BEFORE${UNSET:-default}AFTER" : "BEFOREdefaultAFTER" ,
111+ "BEFORE${!UNSET:-default}AFTER" : "BEFORE${UNSET:-default}AFTER" ,
112+ } {
113+ t .Run (s , func (t * testing.T ) {
114+ actual , err := c .Envsubst (s )
115+ if err != nil {
116+ t .Fatal (err )
117+ }
118+ if actual != expected {
119+ t .Fatalf ("invalid replacement\n expected: %#v\n actual : %#v" , expected , actual )
120+ }
121+ })
115122 }
116123}
0 commit comments