From d8bdf484cc77e5e816b311d99609a2511c897eea Mon Sep 17 00:00:00 2001 From: adshmh <23505281+adshmh@users.noreply.github.com> Date: Mon, 4 Feb 2019 17:38:08 -0500 Subject: [PATCH] fix(helm): add descriptive error if dependency has blank "repository" (#5152) Signed-off-by: Arash Deshmeh --- pkg/downloader/manager.go | 3 +++ pkg/downloader/manager_test.go | 21 +++++++++++++++++---- 2 files changed, 20 insertions(+), 4 deletions(-) diff --git a/pkg/downloader/manager.go b/pkg/downloader/manager.go index 67f9dc7bf..aea48bd7e 100644 --- a/pkg/downloader/manager.go +++ b/pkg/downloader/manager.go @@ -371,6 +371,9 @@ func (m *Manager) getRepoNames(deps []*chartutil.Dependency) (map[string]string, // by Helm. missing := []string{} for _, dd := range deps { + if dd.Repository == "" { + return nil, fmt.Errorf("no 'repository' field specified for dependency: %q", dd.Name) + } // if dep chart is from local path, verify the path is valid if strings.HasPrefix(dd.Repository, "file://") { if _, err := resolver.GetLocalPath(dd.Repository, m.ChartPath); err != nil { diff --git a/pkg/downloader/manager_test.go b/pkg/downloader/manager_test.go index 8c2377e47..cb588394a 100644 --- a/pkg/downloader/manager_test.go +++ b/pkg/downloader/manager_test.go @@ -18,6 +18,7 @@ package downloader import ( "bytes" "reflect" + "strings" "testing" "k8s.io/helm/pkg/chartutil" @@ -99,10 +100,11 @@ func TestGetRepoNames(t *testing.T) { HelmHome: helmpath.Home("testdata/helmhome"), } tests := []struct { - name string - req []*chartutil.Dependency - expect map[string]string - err bool + name string + req []*chartutil.Dependency + expect map[string]string + err bool + expectedErr string }{ { name: "no repo definition failure", @@ -118,6 +120,14 @@ func TestGetRepoNames(t *testing.T) { }, err: true, }, + { + name: "dependency entry missing 'repository' field -- e.g. spelled 'repo'", + req: []*chartutil.Dependency{ + {Name: "dependency-missing-repository-field"}, + }, + err: true, + expectedErr: "no 'repository' field specified for dependency: \"dependency-missing-repository-field\"", + }, { name: "no repo definition failure", req: []*chartutil.Dependency{ @@ -152,6 +162,9 @@ func TestGetRepoNames(t *testing.T) { l, err := m.getRepoNames(tt.req) if err != nil { if tt.err { + if !strings.Contains(err.Error(), tt.expectedErr) { + t.Fatalf("%s: expected error: %s, got: %s", tt.name, tt.expectedErr, err.Error()) + } continue } t.Fatal(err)