@@ -88,28 +88,47 @@ func TestAdd(t *testing.T) {
88
88
c , err := InitChartfile (filepath .Join (tempDir , Filename ))
89
89
require .NoError (t , err )
90
90
91
- err = c .
Add ([]
string {
"stable/[email protected] " })
91
+ err = c .
Add ([]
string {
"stable/[email protected] " }
, "" )
92
92
assert .NoError (t , err )
93
93
94
94
// Adding again the same chart
95
- err = c .
Add ([]
string {
"stable/[email protected] " })
95
+ err = c .
Add ([]
string {
"stable/[email protected] " }
, "" )
96
96
assert .EqualError (t , err , "1 Chart(s) were skipped. Please check above logs for details" )
97
97
98
98
// Adding a chart with a different version to the same path, causes a conflict
99
- err = c .
Add ([]
string {
"stable/[email protected] " })
99
+ err = c .
Add ([]
string {
"stable/[email protected] " }
, "" )
100
100
assert .EqualError (t , err , `Validation errors:
101
101
- output directory "prometheus" is used twice, by charts "stable/[email protected] " and "stable/[email protected] "` )
102
102
103
103
// Add a chart with a specific extract directory
104
- err = c .
Add ([]
string {
"stable/[email protected] :prometheus-11.12.0" })
104
+ err = c .
Add ([]
string {
"stable/[email protected] :prometheus-11.12.0" },
"" )
105
+ assert .NoError (t , err )
106
+
107
+ // Add a chart while specifying a helm repo config file
108
+ require .NoError (t , os .WriteFile (filepath .Join (tempDir , "helmConfig.yaml" ), []byte (`
109
+ apiVersion: ""
110
+ generated: "0001-01-01T00:00:00Z"
111
+ repositories:
112
+ - caFile: ""
113
+ certFile: ""
114
+ insecure_skip_tls_verify: false
115
+ keyFile: ""
116
+ name: private
117
+ pass_credentials_all: false
118
+ password: ""
119
+ url: https://charts.helm.sh/stable
120
+ username: ""
121
+ ` ), 0644 ))
122
+ err = c .
Add ([]
string {
"private/[email protected] :private-11.12.1" },
filepath .
Join (
tempDir ,
"helmConfig.yaml" ))
105
123
assert .NoError (t , err )
106
124
107
125
// Check file contents
108
126
listResult , err := os .ReadDir (filepath .Join (tempDir , "charts" ))
109
127
assert .NoError (t , err )
110
- assert .Equal (t , 2 , len (listResult ))
111
- assert .Equal (t , "prometheus" , listResult [0 ].Name ())
112
- assert .Equal (t , "prometheus-11.12.0" , listResult [1 ].Name ())
128
+ assert .Equal (t , 3 , len (listResult ))
129
+ assert .Equal (t , "private-11.12.1" , listResult [0 ].Name ())
130
+ assert .Equal (t , "prometheus" , listResult [1 ].Name ())
131
+ assert .Equal (t , "prometheus-11.12.0" , listResult [2 ].Name ())
113
132
114
133
chartContent , err := os .ReadFile (filepath .Join (tempDir , "charts" , "prometheus" , "Chart.yaml" ))
115
134
assert .NoError (t , err )
@@ -118,6 +137,10 @@ func TestAdd(t *testing.T) {
118
137
chartContent , err = os .ReadFile (filepath .Join (tempDir , "charts" , "prometheus-11.12.0" , "Chart.yaml" ))
119
138
assert .NoError (t , err )
120
139
assert .Contains (t , string (chartContent ), `version: 11.12.0` )
140
+
141
+ chartContent , err = os .ReadFile (filepath .Join (tempDir , "charts" , "private-11.12.1" , "Chart.yaml" ))
142
+ assert .NoError (t , err )
143
+ assert .Contains (t , string (chartContent ), `version: 11.12.1` )
121
144
}
122
145
123
146
func TestAddOCI (t * testing.T ) {
@@ -128,7 +151,7 @@ func TestAddOCI(t *testing.T) {
128
151
err = c .AddRepos (Repo {Name : "karpenter" , URL : "oci://public.ecr.aws/karpenter" })
129
152
assert .NoError (t , err )
130
153
131
- err = c .
Add ([]
string {
"karpenter/[email protected] " })
154
+ err = c .
Add ([]
string {
"karpenter/[email protected] " }
, "" )
132
155
assert .NoError (t , err )
133
156
134
157
// Check file contents
@@ -143,7 +166,7 @@ func TestRevendorDeletedFiles(t *testing.T) {
143
166
c , err := InitChartfile (filepath .Join (tempDir , Filename ))
144
167
require .NoError (t , err )
145
168
146
- err = c .
Add ([]
string {
"stable/[email protected] " })
169
+ err = c .
Add ([]
string {
"stable/[email protected] " }
, "" )
147
170
assert .NoError (t , err )
148
171
149
172
// Check file contents
@@ -153,7 +176,7 @@ func TestRevendorDeletedFiles(t *testing.T) {
153
176
154
177
// Delete the whole dir and revendor
155
178
require .NoError (t , os .RemoveAll (filepath .Join (tempDir , "charts" , "prometheus" )))
156
- assert .NoError (t , c .Vendor (true ))
179
+ assert .NoError (t , c .Vendor (true , "" ))
157
180
158
181
// Check file contents
159
182
chartContent , err = os .ReadFile (filepath .Join (tempDir , "charts" , "prometheus" , "Chart.yaml" ))
@@ -162,7 +185,7 @@ func TestRevendorDeletedFiles(t *testing.T) {
162
185
163
186
// Delete just the Chart.yaml and revendor
164
187
require .NoError (t , os .Remove (filepath .Join (tempDir , "charts" , "prometheus" , "Chart.yaml" )))
165
- assert .NoError (t , c .Vendor (true ))
188
+ assert .NoError (t , c .Vendor (true , "" ))
166
189
167
190
// Check file contents
168
191
chartContent , err = os .ReadFile (filepath .Join (tempDir , "charts" , "prometheus" , "Chart.yaml" ))
@@ -178,17 +201,17 @@ func TestPrune(t *testing.T) {
178
201
require .NoError (t , err )
179
202
180
203
// Add a chart
181
- require .
NoError (
t ,
c .
Add ([]
string {
"stable/[email protected] " }))
204
+ require .
NoError (
t ,
c .
Add ([]
string {
"stable/[email protected] " }
, "" ))
182
205
183
206
// Add a chart with a directory
184
- require .
NoError (
t ,
c .
Add ([]
string {
"stable/[email protected] :custom-dir" }))
207
+ require .
NoError (
t ,
c .
Add ([]
string {
"stable/[email protected] :custom-dir" }
, "" ))
185
208
186
209
// Add unrelated files and folders
187
210
require .NoError (t , os .WriteFile (filepath .Join (tempDir , "charts" , "foo.txt" ), []byte ("foo" ), 0644 ))
188
211
require .NoError (t , os .Mkdir (filepath .Join (tempDir , "charts" , "foo" ), 0755 ))
189
212
require .NoError (t , os .WriteFile (filepath .Join (tempDir , "charts" , "foo" , "Chart.yaml" ), []byte ("foo" ), 0644 ))
190
213
191
- require .NoError (t , c .Vendor (prune ))
214
+ require .NoError (t , c .Vendor (prune , "" ))
192
215
193
216
// Check if files are pruned
194
217
listResult , err := os .ReadDir (filepath .Join (tempDir , "charts" ))
@@ -217,7 +240,41 @@ func TestInvalidChartName(t *testing.T) {
217
240
Version : "1.0.0" ,
218
241
})
219
242
220
- err = c .Vendor (false )
243
+ err = c .Vendor (false , "" )
221
244
assert .EqualError (t , err , `Validation errors:
222
245
- Chart name "noslash" is not valid. Expecting a repo/name format.` )
223
246
}
247
+
248
+ func TestConfigFileOption (t * testing.T ) {
249
+ tempDir := t .TempDir ()
250
+ c , err := InitChartfile (filepath .Join (tempDir , Filename ))
251
+ require .NoError (t , err )
252
+
253
+ // Don't want to commit credentials so we just verify the "private" repo reference will make
254
+ // use of this helm config since the InitChartfile does not have a reference to it.
255
+ require .NoError (t , os .WriteFile (filepath .Join (tempDir , "helmConfig.yaml" ), []byte (`
256
+ apiVersion: ""
257
+ generated: "0001-01-01T00:00:00Z"
258
+ repositories:
259
+ - caFile: ""
260
+ certFile: ""
261
+ insecure_skip_tls_verify: false
262
+ keyFile: ""
263
+ name: private
264
+ pass_credentials_all: false
265
+ password: ""
266
+ url: https://charts.helm.sh/stable
267
+ username: ""
268
+ ` ), 0644 ))
269
+ c .Manifest .Requires = append (c .Manifest .Requires , Requirement {
270
+ Chart : "private/prometheus" ,
271
+ Version : "11.12.1" ,
272
+ })
273
+
274
+ err = c .Vendor (false , filepath .Join (tempDir , "helmConfig.yaml" ))
275
+ assert .NoError (t , err )
276
+
277
+ chartContent , err := os .ReadFile (filepath .Join (tempDir , "charts" , "prometheus" , "Chart.yaml" ))
278
+ assert .NoError (t , err )
279
+ assert .Contains (t , string (chartContent ), `version: 11.12.1` )
280
+ }
0 commit comments