mirror of
https://github.com/moby/moby.git
synced 2022-11-09 12:21:53 -05:00
Merge pull request #13155 from coolljt0725/fix_validate_tag_name
Fix validate tag name. Fix #13149
This commit is contained in:
commit
3da0013ac4
3 changed files with 33 additions and 0 deletions
|
@ -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 all tags result in the same name
|
||||
func (s *DockerSuite) TestTagOfficialNames(c *check.C) {
|
||||
|
|
|
@ -198,6 +198,9 @@ func ValidateIndexName(val string) (string, error) {
|
|||
if val == "index."+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]?
|
||||
return val, nil
|
||||
}
|
||||
|
@ -235,6 +238,9 @@ func validateRemoteName(remoteName string) error {
|
|||
if !validRepo.MatchString(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
|
||||
}
|
||||
|
||||
|
|
|
@ -299,6 +299,9 @@ func TestValidateRepositoryName(t *testing.T) {
|
|||
invalidRepoNames := []string{
|
||||
"https://github.com/docker/docker",
|
||||
"docker/Docker",
|
||||
"-docker",
|
||||
"-docker/docker",
|
||||
"-docker.io/docker/docker",
|
||||
"docker///docker",
|
||||
"docker.io/docker/Docker",
|
||||
"docker.io/docker///docker",
|
||||
|
|
Loading…
Reference in a new issue