From ebf6d7e5b2b016cc74da67860f651de9544690a7 Mon Sep 17 00:00:00 2001 From: Zhengyi Lai Date: Sat, 25 Jul 2020 09:54:00 +0800 Subject: [PATCH 1/2] Bugfix: panic when chart contains requirements.lock Signed-off-by: Zhengyi Lai --- pkg/chart/loader/load.go | 3 +++ 1 file changed, 3 insertions(+) diff --git a/pkg/chart/loader/load.go b/pkg/chart/loader/load.go index dd4fd2dff..d2aa82ced 100644 --- a/pkg/chart/loader/load.go +++ b/pkg/chart/loader/load.go @@ -123,6 +123,9 @@ func LoadFiles(files []*BufferedFile) (*chart.Chart, error) { if err := yaml.Unmarshal(f.Data, &c.Lock); err != nil { return c, errors.Wrap(err, "cannot load requirements.lock") } + if c.Metadata == nil { + c.Metadata = new(chart.Metadata) + } if c.Metadata.APIVersion == chart.APIVersionV1 { c.Files = append(c.Files, &chart.File{Name: f.Name, Data: f.Data}) } From 9cc00eea246555e30bd06574382e60eb77233413 Mon Sep 17 00:00:00 2001 From: Zhengyi Lai Date: Sat, 24 Oct 2020 00:32:10 +0800 Subject: [PATCH 2/2] Add test case for LoadFiles Signed-off-by: Zhengyi Lai --- pkg/chart/loader/load_test.go | 26 ++++++++++++++++++++++++++ 1 file changed, 26 insertions(+) diff --git a/pkg/chart/loader/load_test.go b/pkg/chart/loader/load_test.go index 40b86dec2..d15753e93 100644 --- a/pkg/chart/loader/load_test.go +++ b/pkg/chart/loader/load_test.go @@ -206,6 +206,32 @@ func TestLoadFile(t *testing.T) { verifyDependencies(t, c) } +func TestLoadFiles_BadCases(t *testing.T) { + for _, tt := range []struct { + name string + bufferedFiles []*BufferedFile + expectError string + }{ + { + name: "These files contain only requirements.lock", + bufferedFiles: []*BufferedFile{ + { + Name: "requirements.lock", + Data: []byte(""), + }, + }, + expectError: "validation: chart.metadata.apiVersion is required"}, + } { + _, err := LoadFiles(tt.bufferedFiles) + if err == nil { + t.Fatal("expected error when load illegal files") + } + if !strings.Contains(err.Error(), tt.expectError) { + t.Errorf("Expected error to contain %q, got %q for %s", tt.expectError, err.Error(), tt.name) + } + } +} + func TestLoadFiles(t *testing.T) { goodFiles := []*BufferedFile{ {