@@ -322,17 +322,19 @@ var _ = Describe("ActionClient", func() {
322
322
323
323
var _ = Describe ("ActionClient methods" , func () {
324
324
var (
325
- obj client.Object
326
- cl client.Client
327
- ac ActionInterface
328
- vals = chartutil.Values {"service" : map [string ]interface {}{"type" : "NodePort" }}
325
+ obj client.Object
326
+ cl client.Client
327
+ actionCfgGetter ActionConfigGetter
328
+ ac ActionInterface
329
+ vals = chartutil.Values {"service" : map [string ]interface {}{"type" : "NodePort" }}
329
330
)
330
331
BeforeEach (func () {
331
332
obj = testutil .BuildTestCR (gvk )
332
333
333
- actionConfigGetter , err := NewActionConfigGetter (cfg , rm )
334
+ var err error
335
+ actionCfgGetter , err = NewActionConfigGetter (cfg , rm )
334
336
Expect (err ).ShouldNot (HaveOccurred ())
335
- acg , err := NewActionClientGetter (actionConfigGetter )
337
+ acg , err := NewActionClientGetter (actionCfgGetter )
336
338
Expect (err ).ToNot (HaveOccurred ())
337
339
ac , err = acg .ActionClientFor (context .Background (), obj )
338
340
Expect (err ).ToNot (HaveOccurred ())
@@ -373,14 +375,32 @@ var _ = Describe("ActionClient", func() {
373
375
})
374
376
It ("should uninstall a failed install" , func () {
375
377
By ("failing to install the release" , func () {
376
- chrt := testutil .MustLoadChart ("../../pkg/internal/testdata/test-chart-1.2.0.tgz" )
377
- chrt .Templates [2 ].Data = append (chrt .Templates [2 ].Data , []byte ("\n gibberish" )... )
378
+ vals := chartutil.Values {"service" : map [string ]interface {}{"type" : "FooBar" }}
378
379
r , err := ac .Install (obj .GetName (), obj .GetNamespace (), & chrt , vals )
379
380
Expect (err ).To (HaveOccurred ())
380
- Expect (r ).To (BeNil ())
381
+ Expect (r ).NotTo (BeNil ())
381
382
})
382
383
verifyNoRelease (cl , obj .GetNamespace (), obj .GetName (), nil )
383
384
})
385
+ When ("failure uninstall is disabled" , func () {
386
+ BeforeEach (func () {
387
+ acg , err := NewActionClientGetter (actionCfgGetter , WithFailureRollbacks (false ))
388
+ Expect (err ).ToNot (HaveOccurred ())
389
+ ac , err = acg .ActionClientFor (context .Background (), obj )
390
+ Expect (err ).ToNot (HaveOccurred ())
391
+ })
392
+ It ("should not uninstall a failed install" , func () {
393
+ vals := chartutil.Values {"service" : map [string ]interface {}{"type" : "FooBar" }}
394
+ returnedRelease , err := ac .Install (obj .GetName (), obj .GetNamespace (), & chrt , vals )
395
+ Expect (err ).To (HaveOccurred ())
396
+ Expect (returnedRelease ).ToNot (BeNil ())
397
+ Expect (returnedRelease .Info .Status ).To (Equal (release .StatusFailed ))
398
+ latestRelease , err := ac .Get (obj .GetName ())
399
+ Expect (err ).ToNot (HaveOccurred ())
400
+ Expect (latestRelease ).ToNot (BeNil ())
401
+ Expect (latestRelease .Version ).To (Equal (returnedRelease .Version ))
402
+ })
403
+ })
384
404
When ("using an option function that returns an error" , func () {
385
405
It ("should fail" , func () {
386
406
opt := func (* action.Install ) error { return errors .New ("expect this error" ) }
@@ -484,17 +504,36 @@ var _ = Describe("ActionClient", func() {
484
504
verifyRelease (cl , obj , rel )
485
505
})
486
506
It ("should rollback a failed upgrade" , func () {
487
- By ("failing to install the release" , func () {
507
+ By ("failing to upgrade the release" , func () {
488
508
vals := chartutil.Values {"service" : map [string ]interface {}{"type" : "FooBar" }}
489
509
r , err := ac .Upgrade (obj .GetName (), obj .GetNamespace (), & chrt , vals )
490
510
Expect (err ).To (HaveOccurred ())
491
- Expect (r ).To (BeNil ())
511
+ Expect (r ).ToNot (BeNil ())
492
512
})
493
513
tmp := * installedRelease
494
514
rollbackRelease := & tmp
495
515
rollbackRelease .Version = installedRelease .Version + 2
496
516
verifyRelease (cl , obj , rollbackRelease )
497
517
})
518
+ When ("failure rollback is disabled" , func () {
519
+ BeforeEach (func () {
520
+ acg , err := NewActionClientGetter (actionCfgGetter , WithFailureRollbacks (false ))
521
+ Expect (err ).ToNot (HaveOccurred ())
522
+ ac , err = acg .ActionClientFor (context .Background (), obj )
523
+ Expect (err ).ToNot (HaveOccurred ())
524
+ })
525
+ It ("should not rollback a failed upgrade" , func () {
526
+ vals := chartutil.Values {"service" : map [string ]interface {}{"type" : "FooBar" }}
527
+ returnedRelease , err := ac .Upgrade (obj .GetName (), obj .GetNamespace (), & chrt , vals )
528
+ Expect (err ).To (HaveOccurred ())
529
+ Expect (returnedRelease ).ToNot (BeNil ())
530
+ Expect (returnedRelease .Info .Status ).To (Equal (release .StatusFailed ))
531
+ latestRelease , err := ac .Get (obj .GetName ())
532
+ Expect (err ).ToNot (HaveOccurred ())
533
+ Expect (latestRelease ).ToNot (BeNil ())
534
+ Expect (latestRelease .Version ).To (Equal (returnedRelease .Version ))
535
+ })
536
+ })
498
537
When ("using an option function that returns an error" , func () {
499
538
It ("should fail" , func () {
500
539
opt := func (* action.Upgrade ) error { return errors .New ("expect this error" ) }
0 commit comments