Skip to content

Commit 800c33a

Browse files
committed
fix: update error handling in Configuration.Init method, add tests for the method
Signed-off-by: Suleiman Dibirov <[email protected]>
1 parent a2a324e commit 800c33a

File tree

2 files changed

+73
-4
lines changed

2 files changed

+73
-4
lines changed

pkg/action/action.go

+3-4
Original file line numberDiff line numberDiff line change
@@ -330,7 +330,7 @@ func GetVersionSet(client discovery.ServerResourcesInterface) (chartutil.Version
330330
}
331331

332332
versionMap := make(map[string]interface{})
333-
versions := []string{}
333+
var versions []string
334334

335335
// Extract the groups
336336
for _, g := range groups {
@@ -411,12 +411,11 @@ func (cfg *Configuration) Init(getter genericclioptions.RESTClientGetter, namesp
411411
namespace,
412412
)
413413
if err != nil {
414-
panic(fmt.Sprintf("Unable to instantiate SQL driver: %v", err))
414+
return errors.Wrap(err, "unable to instantiate SQL driver")
415415
}
416416
store = storage.Init(d)
417417
default:
418-
// Not sure what to do here.
419-
panic("Unknown driver in HELM_DRIVER: " + helmDriver)
418+
return errors.Errorf("unknown driver %q", helmDriver)
420419
}
421420

422421
cfg.RESTClientGetter = getter

pkg/action/action_test.go

+70
Original file line numberDiff line numberDiff line change
@@ -17,9 +17,11 @@ package action
1717

1818
import (
1919
"flag"
20+
"fmt"
2021
"io"
2122
"testing"
2223

24+
"github.com/stretchr/testify/assert"
2325
fakeclientset "k8s.io/client-go/kubernetes/fake"
2426

2527
"helm.sh/helm/v3/pkg/chart"
@@ -273,6 +275,74 @@ func namedReleaseStub(name string, status release.Status) *release.Release {
273275
}
274276
}
275277

278+
func TestConfiguration_Init(t *testing.T) {
279+
tests := []struct {
280+
name string
281+
helmDriver string
282+
expectedDriverType interface{}
283+
expectErr bool
284+
errMsg string
285+
}{
286+
{
287+
name: "Test secret driver",
288+
helmDriver: "secret",
289+
expectedDriverType: &driver.Secrets{},
290+
},
291+
{
292+
name: "Test secrets driver",
293+
helmDriver: "secrets",
294+
expectedDriverType: &driver.Secrets{},
295+
},
296+
{
297+
name: "Test empty driver",
298+
helmDriver: "",
299+
expectedDriverType: &driver.Secrets{},
300+
},
301+
{
302+
name: "Test configmap driver",
303+
helmDriver: "configmap",
304+
expectedDriverType: &driver.ConfigMaps{},
305+
},
306+
{
307+
name: "Test configmaps driver",
308+
helmDriver: "configmaps",
309+
expectedDriverType: &driver.ConfigMaps{},
310+
},
311+
{
312+
name: "Test memory driver",
313+
helmDriver: "memory",
314+
expectedDriverType: &driver.Memory{},
315+
},
316+
{
317+
name: "Test sql driver",
318+
helmDriver: "sql",
319+
expectErr: true,
320+
errMsg: "unable to instantiate SQL driver",
321+
},
322+
{
323+
name: "Test unknown driver",
324+
helmDriver: "someDriver",
325+
expectErr: true,
326+
errMsg: fmt.Sprintf("unknown driver %q", "someDriver"),
327+
},
328+
}
329+
330+
for _, tt := range tests {
331+
t.Run(tt.name, func(t *testing.T) {
332+
cfg := &Configuration{}
333+
334+
actualErr := cfg.Init(nil, "default", tt.helmDriver, nil)
335+
if tt.expectErr {
336+
assert.Error(t, actualErr)
337+
assert.Contains(t, actualErr.Error(), tt.errMsg)
338+
} else {
339+
assert.NoError(t, actualErr)
340+
assert.IsType(t, tt.expectedDriverType, cfg.Releases.Driver)
341+
}
342+
})
343+
}
344+
}
345+
276346
func TestGetVersionSet(t *testing.T) {
277347
client := fakeclientset.NewSimpleClientset()
278348

0 commit comments

Comments
 (0)