From 0cd84157a97148b103683ba7bf82e13591050f84 Mon Sep 17 00:00:00 2001 From: openmohan Date: Sat, 14 Dec 2019 14:56:54 +0530 Subject: [PATCH] bugfix-7226 print the proper error while installing charts, which was hided behind by debug block Signed-off-by: openmohan --- pkg/action/install.go | 15 ++-- pkg/action/install_test.go | 70 ++++++++++++++++++ .../testdata/charts/chartTest-0.1.0.tgz | Bin 0 -> 2804 bytes .../testdata/charts/chartTest-0.1.0.tgz.prov | 26 +++++++ pkg/action/testdata/pubring.gpg | Bin 0 -> 1744 bytes 5 files changed, 102 insertions(+), 9 deletions(-) create mode 100644 pkg/action/testdata/charts/chartTest-0.1.0.tgz create mode 100644 pkg/action/testdata/charts/chartTest-0.1.0.tgz.prov create mode 100644 pkg/action/testdata/pubring.gpg diff --git a/pkg/action/install.go b/pkg/action/install.go index 8cd270693..6d42da0ab 100644 --- a/pkg/action/install.go +++ b/pkg/action/install.go @@ -669,15 +669,12 @@ func (c *ChartPathOptions) LocateChart(name string, settings *cli.EnvSettings) ( } filename, _, err := dl.DownloadTo(name, version, settings.RepositoryCache) - if err == nil { - lname, err := filepath.Abs(filename) - if err != nil { - return filename, err - } - return lname, nil - } else if settings.Debug { + if err != nil { return filename, err } - - return filename, errors.Errorf("failed to download %q (hint: running `helm repo update` may help)", name) + lname, err := filepath.Abs(filename) + if err != nil { + return filename, err + } + return lname, nil } diff --git a/pkg/action/install_test.go b/pkg/action/install_test.go index 4637a4b10..d844e44eb 100644 --- a/pkg/action/install_test.go +++ b/pkg/action/install_test.go @@ -20,6 +20,7 @@ import ( "fmt" "io/ioutil" "log" + "net/http" "os" "path/filepath" "regexp" @@ -29,9 +30,12 @@ import ( "github.com/stretchr/testify/assert" "helm.sh/helm/v3/internal/test" + "helm.sh/helm/v3/internal/test/ensure" "helm.sh/helm/v3/pkg/chartutil" + "helm.sh/helm/v3/pkg/cli" kubefake "helm.sh/helm/v3/pkg/kube/fake" "helm.sh/helm/v3/pkg/release" + "helm.sh/helm/v3/pkg/repo/repotest" "helm.sh/helm/v3/pkg/storage/driver" "helm.sh/helm/v3/pkg/time" ) @@ -566,3 +570,69 @@ func TestNameAndChartGenerateName(t *testing.T) { }) } } + +func Test_LocateChart_WithURL_WithVerify(t *testing.T) { + rootDir := ensure.TempDir(t) + srv := repotest.NewServer(rootDir) + defer srv.Stop() + + srv.LinkIndices() + + _, err := srv.CopyCharts("testdata/charts/*") + if err != nil { + t.Fatal(err) + } + + res, err := http.Get(srv.URL() + "/chart.tgz") + res.Body.Close() + if err != nil { + t.Fatal(err) + } + + tests := []struct { + chartName string + keyRingFile string + name string + wantErr bool + wantErrString string + }{ + { + chartName: "chartTest-0.1.0.tgz", + keyRingFile: "./testdata/pubring.gpg", + name: "correct keyring", + wantErr: false, + wantErrString: "", + }, + { + chartName: "chartTest-0.1.0.tgz", + keyRingFile: "./testdata/keyring/pubringtemp.gpg", + name: "bad keyring", + wantErr: true, + wantErrString: "failed to load keyring:", + }, + } + + for _, tc := range tests { + t.Run(tc.name, func(t *testing.T) { + absKeyRing, _ := filepath.Abs(tc.keyRingFile) + + chartOptions := &ChartPathOptions{Keyring: absKeyRing, Verify: true} + + downloader := cli.New() + downloader.RepositoryConfig = rootDir + "/repositories.yaml" + downloader.RepositoryCache = rootDir + + var err error + _, err = chartOptions.LocateChart(srv.URL()+"/"+tc.chartName, downloader) + if (err != nil) != tc.wantErr { + t.Errorf("LocateChart() wantErr: %v, gotErr: %v", tc.wantErr, err) + return + } + if err != nil { + if !strings.Contains(err.Error(), tc.wantErrString) { + t.Errorf("LocateChart() improver error message received, got: %v, expected: %v*", err.Error(), tc.wantErrString) + } + } + }) + } +} diff --git a/pkg/action/testdata/charts/chartTest-0.1.0.tgz b/pkg/action/testdata/charts/chartTest-0.1.0.tgz new file mode 100644 index 0000000000000000000000000000000000000000..0ec266dacbc7ab81f252e5fa37264a65eb4d7536 GIT binary patch literal 2804 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 GLI40t;dwp) literal 0 HcmV?d00001 diff --git a/pkg/action/testdata/charts/chartTest-0.1.0.tgz.prov b/pkg/action/testdata/charts/chartTest-0.1.0.tgz.prov new file mode 100644 index 000000000..9cd2da541 --- /dev/null +++ b/pkg/action/testdata/charts/chartTest-0.1.0.tgz.prov @@ -0,0 +1,26 @@ +-----BEGIN PGP SIGNED MESSAGE----- +Hash: SHA512 + +apiVersion: v2 +appVersion: 1.16.0 +description: A Helm chart for Kubernetes +name: chartTest +type: application +version: 0.1.0 + +... +files: + chartTest-0.1.0.tgz: sha256:d00f9e13f91482b4a0e15b637f03045882d5fa6af0c65ed3b055096eb6351e7c +-----BEGIN PGP SIGNATURE----- + +wsDcBAEBCgAQBQJeTrjoCRCWvWlwhIOoPAAAt3YMAF+Q482zP8uwPTBPZUhnjYR5 +X79BI+lRj6jKbnOyobFtvioEk0mNnpyCJOYVd/i8DNPf+xOgXc5fc8Ri8DsgO8T9 +GVI7OCeOHnnZB8eC5IRh3zjvOefsVMTzMjkj6uQ+mPSQMChFrZvq0ZnXdz7BLXU5 +8k0Dw9LgyVr9LM7uuBz1n6AjOtZaQXYbQyVJLCdkApzucqCrcbVvZXGx3pnAsJ6a +xYkhR15sexH0+wzMNzQvcHv4GWS/smZOYV7m2GmJY0XUIpteme728UqrrxnplHoW +JwUViz7V9i7PlL/0NFn1aH/oEvG9gFqxA9JbZDe+WlVfyrtE+C5B/DwID5ldkL0r +gT81jwXYtC5v8+LY8EfI8PuKBmMJP0JxLm7fRc4ITYj/mx2oQ9yiEtvh6GKzW1X8 +KJqM+0FgmcxJ3YBiJ+/ojAVsHN1EeiDvp+ucP5VGsCv2HyfQx80V7TTAfvkBxcU2 +vTXXT52003p93GHAx40UND0To6gyYlw0gbeG2yYlNg== +=3TqE +-----END PGP SIGNATURE----- \ No newline at end of file diff --git a/pkg/action/testdata/pubring.gpg b/pkg/action/testdata/pubring.gpg new file mode 100644 index 0000000000000000000000000000000000000000..18c3f8703af6fdabeda88646b30c03277027cc68 GIT binary patch literal 1744 zcmajedpr}00tfJIHfCm-=e&+_+T?NNH4^fwFpms%JVtf!@tiR`bjXGypW9 zRw;>wB0ESE;kYauE6+$o9M0|D&;8u{-~H$J`Tg_z>-YJV0Q10s?gTy%4k!z<*ft}x zJ!ab|a8%AH)WX|t)RS>Lv4P;|?C6-h@%i?_jP3>;=H3^-5NfQ61cQsjvFWT6l}?3@ z4SWQDLpNr`-UAS@i*f*K6vVMtPKs_9Mp7Fockt8}Z z!s_=qDWlwIy7OFSs0w?(cLM1(a3#-<9bg6-g5N8M+RR#Jr6LMmn;_(-^52={$fJBa zgN0-L^^5s-h@QgQ!y#1CWsnt2ct5Q&auPWwdnj3tWK}4%7NW7?o<<$LibX8$Q;iK4 ztvBR`%;Jq20>)fschgVSPlpSoKn;TyPD#@Ss%Hj zo(@S_FYXMFNxxQS1p$5k5u_>xkre9*1wf=Ep%Nf*1(+mM3ItXJi2*@B06|JA0GOoA zepkFzAhGyteec73#uG_2jachwR7V$b|Qez28~lTENsULAlQ0Q!;Z3eQynMW6_C;4&1{zb`m?7Ir=9FvHdeNYx zc5QcjqLftpvKxk#{~*P0`PFgj99${ub(`VR;v{T(l!LuBEkRRlVYsC)2Fb2sbhsmS zlunKhi>Enbyvo{!1%&SD68Ic5$hyO}S_S*(yckA+^7rjEatgS3S|fKG({?UEH~1qn z?dBlDKYDf%sDWz#%qem5mQ$c{oQHY2JptRE7fXKghj%xzy;5Rr#2X*CS32)ytGmle zoEcY&wwyVP7S{QWeyID#u?=d{){d`Nkb@NVu(A$4Se_VSy!`m!1*u;xV3v$y%s%}uz=l`nNzeT9kZ$>X^JkXX=gVCdSFT=v!jwpd zmEPhll)t)RZ_6S6xa7%9sz`&vy=%A}!D&TYSsy@*TB9HG7ulK_+%J zikj)GdoJ0e&qq|@(yGn*58~F2NQAZWP?x5Yz6QPzmM*@s1udWO&>38LT(K_; zk`7l&%u?I}9mG|Jm`>DW?aDp7s^kE}x;-saG`o(uz>gcG*&wKej|Dgj&uO4~<(UkRsHUYnze^sO;tavn)qADk5Y42)acc;228iA(zHgmQ?W)$qt zH(@00aW>l7v$>k`QABT{|6O;a&gAE`?6*b3_z$5+6B|3r$0B1+4DkL1FdNtbM*Wi+ z_Wv-0|C`zWa$@qO_8@1a8kbnC@ggHYBBt3avZA-toPE?)2>nxwCqim*CDyB*C<@`P zh|w}FO`{jScnjBhwTgNhqgg;g_@ls#OUXaI&;2bQa+)gUYdw!MhOxaGnF~9