summaryrefslogtreecommitdiff
path: root/integration-cli/docker_cli_tag_test.go
diff options
context:
space:
mode:
Diffstat (limited to 'integration-cli/docker_cli_tag_test.go')
-rw-r--r--integration-cli/docker_cli_tag_test.go86
1 files changed, 86 insertions, 0 deletions
diff --git a/integration-cli/docker_cli_tag_test.go b/integration-cli/docker_cli_tag_test.go
new file mode 100644
index 0000000000..d75b7db385
--- /dev/null
+++ b/integration-cli/docker_cli_tag_test.go
@@ -0,0 +1,86 @@
+package main
+
+import (
+ "fmt"
+ "os/exec"
+ "testing"
+)
+
+// tagging a named image in a new unprefixed repo should work
+func TestTagUnprefixedRepoByName(t *testing.T) {
+ pullCmd := exec.Command(dockerBinary, "pull", "busybox")
+ out, exitCode, err := runCommandWithOutput(pullCmd)
+ errorOut(err, t, fmt.Sprintf("%s %s", out, err))
+
+ if err != nil || exitCode != 0 {
+ t.Fatal("pulling the busybox image from the registry has failed")
+ }
+
+ tagCmd := exec.Command(dockerBinary, "tag", "busybox", "testfoobarbaz")
+ out, _, err = runCommandWithOutput(tagCmd)
+ errorOut(err, t, fmt.Sprintf("%v %v", out, err))
+
+ deleteImages("testfoobarbaz")
+
+ logDone("tag - busybox -> testfoobarbaz")
+}
+
+// tagging an image by ID in a new unprefixed repo should work
+func TestTagUnprefixedRepoByID(t *testing.T) {
+ getIDCmd := exec.Command(dockerBinary, "inspect", "-f", "{{.id}}", "busybox")
+ out, _, err := runCommandWithOutput(getIDCmd)
+ errorOut(err, t, fmt.Sprintf("failed to get the image ID of busybox: %v", err))
+
+ cleanedImageID := stripTrailingCharacters(out)
+ tagCmd := exec.Command(dockerBinary, "tag", cleanedImageID, "testfoobarbaz")
+ out, _, err = runCommandWithOutput(tagCmd)
+ errorOut(err, t, fmt.Sprintf("%s %s", out, err))
+
+ deleteImages("testfoobarbaz")
+
+ logDone("tag - busybox's image ID -> testfoobarbaz")
+}
+
+// ensure we don't allow the use of invalid tags; these tag operations should fail
+func TestTagInvalidUnprefixedRepo(t *testing.T) {
+ // skip this until we start blocking bad tags
+ t.Skip()
+
+ invalidRepos := []string{"-foo", "fo$z$", "Foo@3cc", "Foo$3", "Foo*3", "Fo^3", "Foo!3", "F)xcz(", "fo", "f"}
+
+ for _, repo := range invalidRepos {
+ tagCmd := exec.Command(dockerBinary, "tag", "busybox", repo)
+ _, _, err := runCommandWithOutput(tagCmd)
+ if err == nil {
+ t.Errorf("tag busybox %v should have failed", repo)
+ continue
+ }
+ logMessage := fmt.Sprintf("tag - busybox %v --> must fail", repo)
+ logDone(logMessage)
+ }
+}
+
+// ensure we allow the use of valid tags
+func TestTagValidPrefixedRepo(t *testing.T) {
+ pullCmd := exec.Command(dockerBinary, "pull", "busybox")
+ out, exitCode, err := runCommandWithOutput(pullCmd)
+ errorOut(err, t, fmt.Sprintf("%s %s", out, err))
+
+ if err != nil || exitCode != 0 {
+ t.Fatal("pulling the busybox image from the registry has failed")
+ }
+
+ validRepos := []string{"fooo/bar", "fooaa/test"}
+
+ for _, repo := range validRepos {
+ tagCmd := exec.Command(dockerBinary, "tag", "busybox", repo)
+ _, _, err := runCommandWithOutput(tagCmd)
+ if err != nil {
+ t.Errorf("tag busybox %v should have worked: %s", repo, err)
+ continue
+ }
+ deleteImages(repo)
+ logMessage := fmt.Sprintf("tag - busybox %v", repo)
+ logDone(logMessage)
+ }
+}