From b979f006927ded800cafea57ee81f6e6b98b0f27 Mon Sep 17 00:00:00 2001 From: Aviral Takkar Date: Wed, 14 Aug 2019 15:27:59 -0700 Subject: [PATCH] Fix bug in parsing domain from repository reference Signed-off-by: Aviral Takkar Signed-off-by: Sebastiaan van Stijn --- reference/docker/normalize.go | 2 +- reference/docker/normalize_test.go | 16 ++++++++++++++++ 2 files changed, 17 insertions(+), 1 deletion(-) diff --git a/reference/docker/normalize.go b/reference/docker/normalize.go index fbb6e1cf4..c1c46a61d 100644 --- a/reference/docker/normalize.go +++ b/reference/docker/normalize.go @@ -105,7 +105,7 @@ func ParseDockerRef(ref string) (Named, error) { // needs to be already validated before. func splitDockerDomain(name string) (domain, remainder string) { i := strings.IndexRune(name, '/') - if i == -1 || (!strings.ContainsAny(name[:i], ".:") && name[:i] != "localhost") { + if i == -1 || (!strings.ContainsAny(name[:i], ".:") && name[:i] != "localhost" && strings.ToLower(name[:i]) == name[:i]) { domain, remainder = defaultDomain, name } else { domain, remainder = name[:i], name[i+1:] diff --git a/reference/docker/normalize_test.go b/reference/docker/normalize_test.go index f9af3f031..8bc010104 100644 --- a/reference/docker/normalize_test.go +++ b/reference/docker/normalize_test.go @@ -43,6 +43,8 @@ func TestValidateReferenceName(t *testing.T) { // when specified with a hostname, it removes the ambiguity from about // whether the value is an identifier or repository name "docker.io/1a3f5e7d9c1b3a5f7e9d1c3b5a7f9e1d3c5b7a9f1e3d5d7c9b1a3f5e7d9c1b3a", + "Docker/docker", + "DOCKER/docker", } invalidRepoNames := []string{ "https://github.com/docker/docker", @@ -244,6 +246,20 @@ func TestParseRepositoryInfo(t *testing.T) { AmbiguousName: "", Domain: "docker.io", }, + { + RemoteName: "bar", + FamiliarName: "Foo/bar", + FullName: "Foo/bar", + AmbiguousName: "", + Domain: "Foo", + }, + { + RemoteName: "bar", + FamiliarName: "FOO/bar", + FullName: "FOO/bar", + AmbiguousName: "", + Domain: "FOO", + }, } for _, tcase := range tcases {