mirror of https://github.com/docker/docs.git
Fix invalid tag name
Signed-off-by: Lei Jitang <leijitang@huawei.com>
This commit is contained in:
parent
36d995a291
commit
e00cfbb6f2
|
@ -116,6 +116,30 @@ func (s *DockerSuite) TestTagExistedNameWithForce(c *check.C) {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func (s *DockerSuite) TestTagWithSuffixHyphen(c *check.C) {
|
||||||
|
if err := pullImageIfNotExist("busybox:latest"); err != nil {
|
||||||
|
c.Fatal("couldn't find the busybox:latest image locally and failed to pull it")
|
||||||
|
}
|
||||||
|
// test repository name begin with '-'
|
||||||
|
tagCmd := exec.Command(dockerBinary, "tag", "busybox:latest", "-busybox:test")
|
||||||
|
out, _, err := runCommandWithOutput(tagCmd)
|
||||||
|
if err == nil || !strings.Contains(out, "Invalid repository name (-busybox). Cannot begin or end with a hyphen") {
|
||||||
|
c.Fatal("tag a name begin with '-' should failed")
|
||||||
|
}
|
||||||
|
// test namespace name begin with '-'
|
||||||
|
tagCmd = exec.Command(dockerBinary, "tag", "busybox:latest", "-test/busybox:test")
|
||||||
|
out, _, err = runCommandWithOutput(tagCmd)
|
||||||
|
if err == nil || !strings.Contains(out, "Invalid namespace name (-test). Cannot begin or end with a hyphen") {
|
||||||
|
c.Fatal("tag a name begin with '-' should failed")
|
||||||
|
}
|
||||||
|
// test index name begin wiht '-'
|
||||||
|
tagCmd = exec.Command(dockerBinary, "tag", "busybox:latest", "-index:5000/busybox:test")
|
||||||
|
out, _, err = runCommandWithOutput(tagCmd)
|
||||||
|
if err == nil || !strings.Contains(out, "Invalid index name (-index:5000). Cannot begin or end with a hyphen") {
|
||||||
|
c.Fatal("tag a name begin with '-' should failed")
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
// ensure tagging using official names works
|
// ensure tagging using official names works
|
||||||
// ensure all tags result in the same name
|
// ensure all tags result in the same name
|
||||||
func (s *DockerSuite) TestTagOfficialNames(c *check.C) {
|
func (s *DockerSuite) TestTagOfficialNames(c *check.C) {
|
||||||
|
|
|
@ -198,6 +198,9 @@ func ValidateIndexName(val string) (string, error) {
|
||||||
if val == "index."+IndexServerName() {
|
if val == "index."+IndexServerName() {
|
||||||
val = IndexServerName()
|
val = IndexServerName()
|
||||||
}
|
}
|
||||||
|
if strings.HasPrefix(val, "-") || strings.HasSuffix(val, "-") {
|
||||||
|
return "", fmt.Errorf("Invalid index name (%s). Cannot begin or end with a hyphen.", val)
|
||||||
|
}
|
||||||
// *TODO: Check if valid hostname[:port]/ip[:port]?
|
// *TODO: Check if valid hostname[:port]/ip[:port]?
|
||||||
return val, nil
|
return val, nil
|
||||||
}
|
}
|
||||||
|
@ -235,6 +238,9 @@ func validateRemoteName(remoteName string) error {
|
||||||
if !validRepo.MatchString(name) {
|
if !validRepo.MatchString(name) {
|
||||||
return fmt.Errorf("Invalid repository name (%s), only [a-z0-9-_.] are allowed", name)
|
return fmt.Errorf("Invalid repository name (%s), only [a-z0-9-_.] are allowed", name)
|
||||||
}
|
}
|
||||||
|
if strings.HasPrefix(name, "-") || strings.HasSuffix(name, "-") {
|
||||||
|
return fmt.Errorf("Invalid repository name (%s). Cannot begin or end with a hyphen.", name)
|
||||||
|
}
|
||||||
return nil
|
return nil
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -299,6 +299,9 @@ func TestValidateRepositoryName(t *testing.T) {
|
||||||
invalidRepoNames := []string{
|
invalidRepoNames := []string{
|
||||||
"https://github.com/docker/docker",
|
"https://github.com/docker/docker",
|
||||||
"docker/Docker",
|
"docker/Docker",
|
||||||
|
"-docker",
|
||||||
|
"-docker/docker",
|
||||||
|
"-docker.io/docker/docker",
|
||||||
"docker///docker",
|
"docker///docker",
|
||||||
"docker.io/docker/Docker",
|
"docker.io/docker/Docker",
|
||||||
"docker.io/docker///docker",
|
"docker.io/docker///docker",
|
||||||
|
|
Loading…
Reference in New Issue