@@ -345,28 +345,38 @@ func (t *Testing) InstallChart(chart string, valuesFiles []string) TestResult {
345
345
for _ , valuesFile := range valuesFiles {
346
346
var namespace , release , releaseSelector string
347
347
348
- if t .config .Namespace != "" {
349
- namespace = t .config .Namespace
350
- release , _ = util .CreateInstallParams (chart , t .config .BuildId )
351
- releaseSelector = fmt .Sprintf ("%s=%s" , t .config .ReleaseLabel , release )
352
- } else {
353
- release , namespace = util .CreateInstallParams (chart , t .config .BuildId )
354
- defer t .kubectl .DeleteNamespace (namespace )
355
- }
348
+ // Use anonymous function. Otherwise deferred calls would pile up
349
+ // and be executed in reverse order after the loop.
350
+ fun := func () error {
351
+ if t .config .Namespace != "" {
352
+ namespace = t .config .Namespace
353
+ release , _ = util .CreateInstallParams (chart , t .config .BuildId )
354
+ releaseSelector = fmt .Sprintf ("%s=%s" , t .config .ReleaseLabel , release )
355
+ } else {
356
+ release , namespace = util .CreateInstallParams (chart , t .config .BuildId )
357
+ defer t .kubectl .DeleteNamespace (namespace )
358
+ }
356
359
357
- defer t .helm .DeleteRelease (release )
358
- defer t .PrintPodDetailsAndLogs (namespace , releaseSelector )
360
+ defer t .helm .DeleteRelease (release )
361
+ defer t .PrintPodDetailsAndLogs (namespace , releaseSelector )
359
362
360
- if err := t .helm .InstallWithValues (chart , valuesFile , namespace , release ); err != nil {
361
- result .Error = err
362
- break
363
- }
364
- if err := t .kubectl .WaitForDeployments (namespace , releaseSelector ); err != nil {
365
- result .Error = err
366
- break
363
+ if err := t .helm .InstallWithValues (chart , valuesFile , namespace , release ); err != nil {
364
+ result .Error = err
365
+ return err
366
+ }
367
+ if err := t .kubectl .WaitForDeployments (namespace , releaseSelector ); err != nil {
368
+ result .Error = err
369
+ return err
370
+ }
371
+ if err := t .helm .Test (release ); err != nil {
372
+ result .Error = err
373
+ return err
374
+ }
375
+
376
+ return nil
367
377
}
368
- if err := t . helm . Test ( release ); err != nil {
369
- result . Error = err
378
+
379
+ if err := fun (); err != nil {
370
380
break
371
381
}
372
382
}
0 commit comments