From 126a880f41ef7fd7f60fa6bfc815b29980c45802 Mon Sep 17 00:00:00 2001 From: Ilan Zerath Date: Mon, 25 May 2020 01:44:46 +0200 Subject: [PATCH] fix(reference): Fix reference for tag (#8090) Signed-off-by: Ilan Zerath --- internal/experimental/registry/reference.go | 6 +++++- internal/experimental/registry/reference_test.go | 14 ++++++++++++++ 2 files changed, 19 insertions(+), 1 deletion(-) diff --git a/internal/experimental/registry/reference.go b/internal/experimental/registry/reference.go index ced6cf33a..068bd46b5 100644 --- a/internal/experimental/registry/reference.go +++ b/internal/experimental/registry/reference.go @@ -135,11 +135,15 @@ func fixSplitComponents(c []string) []string { if len(c) <= 1 { return c } + possiblePortParts := strings.Split(c[1], "/") - if _, err := strconv.Atoi(possiblePortParts[0]); err == nil { + + if _, err := strconv.Atoi(possiblePortParts[0]); err == nil && len(possiblePortParts) > 1 { components := []string{strings.Join(c[:2], ":")} components = append(components, c[2:]...) + return components } + return c } diff --git a/internal/experimental/registry/reference_test.go b/internal/experimental/registry/reference_test.go index bb53ebab8..cc50290e2 100644 --- a/internal/experimental/registry/reference_test.go +++ b/internal/experimental/registry/reference_test.go @@ -116,4 +116,18 @@ func TestParseReference(t *testing.T) { s = "localhost:5000/x/y/z:123:x:y" _, err = ParseReference(s) is.Error(err, "ref contains too many colons (4)") + + s = "myrepo/mychart:1222222" + ref, err = ParseReference(s) + is.NoError(err) + is.Equal("myrepo/mychart", ref.Repo) + is.Equal("1222222", ref.Tag) + is.Equal("myrepo/mychart:1222222", ref.FullName()) + + s = "myrepo/mychart:5000:1222222" + ref, err = ParseReference(s) + is.NoError(err) + is.Equal("myrepo/mychart:5000", ref.Repo) + is.Equal("1222222", ref.Tag) + is.Equal("myrepo/mychart:5000:1222222", ref.FullName()) }