From 2130d8e1ce7a4759cddc30e7bf32d247c893034a Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Herbert=20M=C3=BChlburger?= Date: Thu, 30 May 2019 17:38:00 +0200 Subject: [PATCH] Fixes #5752. MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Signed-off-by: Herbert Mühlburger --- pkg/registry/cache.go | 4 ++-- pkg/registry/client_test.go | 27 +++++++++++++++++++++++++-- pkg/registry/reference.go | 6 ++++++ 3 files changed, 33 insertions(+), 4 deletions(-) diff --git a/pkg/registry/cache.go b/pkg/registry/cache.go index ccedd1e54..ba11c2422 100644 --- a/pkg/registry/cache.go +++ b/pkg/registry/cache.go @@ -118,8 +118,8 @@ func (cache *filesystemCache) ChartToLayers(ch *chart.Chart) ([]ocispec.Descript // such as "no chart name specified (Chart.yaml)" ch.Metadata = &chart.Metadata{ APIVersion: chart.APIVersionV1, - Name: "-", - Version: "0.1.0", + Name: name, + Version: version, } destDir := mkdir(filepath.Join(cache.rootDir, "blobs", ".build")) tmpFile, err := chartutil.Save(ch, destDir) diff --git a/pkg/registry/client_test.go b/pkg/registry/client_test.go index d9f22361f..b3ae25c73 100644 --- a/pkg/registry/client_test.go +++ b/pkg/registry/client_test.go @@ -128,12 +128,12 @@ func (suite *RegistryClientTestSuite) Test_1_SaveChart() { // empty chart err = suite.RegistryClient.SaveChart(&chart.Chart{}, ref) - suite.NotNil(err) + suite.NotNil(err, "chart.metadata is required") // valid chart ch := &chart.Chart{} ch.Metadata = &chart.Metadata{ - APIVersion: "v1", + APIVersion: chart.APIVersionV1, Name: "testchart", Version: "1.2.3", } @@ -141,6 +141,29 @@ func (suite *RegistryClientTestSuite) Test_1_SaveChart() { suite.Nil(err) } +func (suite *RegistryClientTestSuite) TestSaveChartLatest() { + ref, err := ParseReference(fmt.Sprintf("%s/testrepo/testchart", suite.DockerRegistryHost)) + suite.Nil(err) + + ch := &chart.Chart{} + ch.Metadata = &chart.Metadata{ + APIVersion: chart.APIVersionV1, + Name: "testchart", + Version: "latest", + } + err = suite.RegistryClient.SaveChart(ch, ref) + suite.Nil(err) + suite.Equal("testchart", ch.Metadata.Name) + suite.Equal("latest", ch.Metadata.Version) + + ref, err = ParseReference(fmt.Sprintf("%s/testrepo/testchart:latest", suite.DockerRegistryHost)) + suite.Nil(err) + + err = suite.RegistryClient.SaveChart(ch, ref) + suite.Nil(err) + suite.Equal("testchart", ch.Metadata.Name) + suite.Equal("latest", ch.Metadata.Version) +} func (suite *RegistryClientTestSuite) Test_2_LoadChart() { // non-existent ref diff --git a/pkg/registry/reference.go b/pkg/registry/reference.go index 7a136205f..11ebb3ac2 100644 --- a/pkg/registry/reference.go +++ b/pkg/registry/reference.go @@ -18,6 +18,7 @@ package registry // import "helm.sh/helm/pkg/registry" import ( "errors" + "fmt" "regexp" "strings" @@ -39,6 +40,11 @@ type ( } ) +// String returns the normalized string for the ref. +func (r Reference) String() string { + return fmt.Sprintf("%v:%v", r.Repo, r.Tag) +} + // ParseReference converts a string to a Reference func ParseReference(s string) (*Reference, error) { spec, err := reference.Parse(s)