diff --git a/internal/experimental/registry/reference.go b/internal/experimental/registry/reference.go index ced6cf33a..37baf4c69 100644 --- a/internal/experimental/registry/reference.go +++ b/internal/experimental/registry/reference.go @@ -100,7 +100,7 @@ func (ref *Reference) validateRepo() error { } // Makes sure the repo results in a parsable URL (similar to what is done // with containerd reference parsing) - _, err := url.Parse(ref.Repo) + _, err := url.Parse("//" + ref.Repo) return err } diff --git a/internal/experimental/registry/reference_test.go b/internal/experimental/registry/reference_test.go index bb53ebab8..6e35cb531 100644 --- a/internal/experimental/registry/reference_test.go +++ b/internal/experimental/registry/reference_test.go @@ -109,6 +109,13 @@ func TestParseReference(t *testing.T) { is.Equal("123", ref.Tag) is.Equal("localhost:5000/x/y/z:123", ref.FullName()) + s = "10.21.134.123:5000/x/y/z:latest" + ref, err = ParseReference(s) + is.NoError(err) + is.Equal("10.21.134.123:5000/x/y/z", ref.Repo) + is.Equal("latest", ref.Tag) + is.Equal("10.21.134.123:5000/x/y/z:latest", ref.FullName()) + s = "localhost:5000/x/y/z:123:x" _, err = ParseReference(s) is.Error(err, "ref contains too many colons (3)")