@@ -48,3 +48,80 @@ func TestEnvsubst_Strinct(t *testing.T) {
4848 g .Expect (err ).To (HaveOccurred ())
4949 g .Expect (err .Error ()).To (ContainSubstring ("variable not set (strict mode)" ))
5050}
51+
52+ func TestEnvsubst_K8sAware (t * testing.T ) {
53+ tests := []struct {
54+ name string
55+ args string
56+ env map [string ]string
57+ input string
58+ gold string
59+ wantErr string
60+ }{
61+ {
62+ name : "annotation disabled" ,
63+ args : "envsubst --k8s-aware" ,
64+ env : map [string ]string {"REPO_NAME" : "test" },
65+ input : "testdata/envsubst/k8s-aware.yaml" ,
66+ gold : "testdata/envsubst/k8s-aware.gold" ,
67+ },
68+ {
69+ name : "label disabled" ,
70+ args : "envsubst --k8s-aware" ,
71+ input : "testdata/envsubst/k8s-aware-label.yaml" ,
72+ gold : "testdata/envsubst/k8s-aware-label.gold" ,
73+ },
74+ {
75+ name : "strict skips disabled resources" ,
76+ args : "envsubst --strict --k8s-aware" ,
77+ env : map [string ]string {"REPO_NAME" : "test" },
78+ input : "testdata/envsubst/k8s-aware.yaml" ,
79+ gold : "testdata/envsubst/k8s-aware.gold" ,
80+ },
81+ {
82+ name : "strict errors on enabled resource with missing var" ,
83+ args : "envsubst --strict --k8s-aware" ,
84+ input : "testdata/envsubst/k8s-aware.yaml" ,
85+ wantErr : "variable not set (strict mode)" ,
86+ },
87+ {
88+ name : "bash script in disabled resource" ,
89+ args : "envsubst --k8s-aware" ,
90+ env : map [string ]string {"APP_NAME" : "myapp" },
91+ input : "testdata/envsubst/k8s-aware-bash.yaml" ,
92+ gold : "testdata/envsubst/k8s-aware-bash.gold" ,
93+ },
94+ {
95+ name : "strict with bash script in disabled resource" ,
96+ args : "envsubst --strict --k8s-aware" ,
97+ env : map [string ]string {"APP_NAME" : "myapp" },
98+ input : "testdata/envsubst/k8s-aware-bash.yaml" ,
99+ gold : "testdata/envsubst/k8s-aware-bash.gold" ,
100+ },
101+ }
102+
103+ for _ , tt := range tests {
104+ t .Run (tt .name , func (t * testing.T ) {
105+ g := NewWithT (t )
106+
107+ for k , v := range tt .env {
108+ t .Setenv (k , v )
109+ }
110+
111+ input , err := os .ReadFile (tt .input )
112+ g .Expect (err ).NotTo (HaveOccurred ())
113+
114+ output , err := executeCommandWithIn (tt .args , bytes .NewReader (input ))
115+ if tt .wantErr != "" {
116+ g .Expect (err ).To (HaveOccurred ())
117+ g .Expect (err .Error ()).To (ContainSubstring (tt .wantErr ))
118+ return
119+ }
120+ g .Expect (err ).NotTo (HaveOccurred ())
121+
122+ expected , err := os .ReadFile (tt .gold )
123+ g .Expect (err ).NotTo (HaveOccurred ())
124+ g .Expect (output ).To (Equal (string (expected )))
125+ })
126+ }
127+ }
0 commit comments