get.porter.sh/porter@v1.3.0/pkg/porter/uninstall_test.go (about) 1 package porter 2 3 import ( 4 "bytes" 5 "errors" 6 "fmt" 7 "testing" 8 9 "github.com/stretchr/testify/require" 10 ) 11 12 func TestPorter_HandleUninstallErrs(t *testing.T) { 13 testcases := []struct { 14 name string 15 opts UninstallDeleteOptions 16 err error 17 wantOut string 18 wantErr string 19 }{ 20 { 21 name: "no delete; no err", 22 opts: UninstallDeleteOptions{}, 23 }, { 24 name: "no delete", 25 opts: UninstallDeleteOptions{}, 26 err: errors.New("an error was encountered"), 27 wantErr: "an error was encountered", 28 }, { 29 name: "--delete; no --force-delete", 30 opts: UninstallDeleteOptions{Delete: true}, 31 err: errors.New("an error was encountered"), 32 wantErr: fmt.Sprintf("2 errors occurred:\n\t* an error was encountered\n\t* %s\n\n", ErrUnsafeInstallationDeleteRetryForceDelete), 33 }, { 34 name: "--force-delete", 35 opts: UninstallDeleteOptions{ForceDelete: true}, 36 err: errors.New("an error was encountered"), 37 wantOut: "ignoring the following errors as --force-delete is true:\n an error was encountered", 38 }, 39 } 40 41 for _, tc := range testcases { 42 t.Run(tc.name, func(t *testing.T) { 43 out := bytes.NewBufferString("") 44 45 err := tc.opts.handleUninstallErrs(out, tc.err) 46 if tc.wantErr != "" { 47 require.EqualError(t, err, tc.wantErr) 48 } else { 49 require.NoError(t, err) 50 } 51 52 require.Equal(t, tc.wantOut, out.String()) 53 }) 54 } 55 }