Browse code

Convert a legacy integration test to a clean v2 CLI integration test.

Docker-DCO-1.1-Signed-off-by: Solomon Hykes <solomon@docker.com> (github: shykes)

Solomon Hykes authored on 2014/04/04 09:57:41
Showing 4 changed files
... ...
@@ -18,3 +18,41 @@ func TestImagesEnsureImageIsListed(t *testing.T) {
18 18
 
19 19
 	logDone("images - busybox should be listed")
20 20
 }
21
+
22
+func TestCLIImageTagRemove(t *testing.T) {
23
+	imagesBefore, _, _ := cmd(t, "images", "-a")
24
+	cmd(t, "tag", "busybox", "utest:tag1")
25
+	cmd(t, "tag", "busybox", "utest/docker:tag2")
26
+	cmd(t, "tag", "busybox", "utest:5000/docker:tag3")
27
+	{
28
+		imagesAfter, _, _ := cmd(t, "images", "-a")
29
+		if nLines(imagesAfter) != nLines(imagesBefore)+3 {
30
+			t.Fatalf("before: %#s\n\nafter: %#s\n", imagesBefore, imagesAfter)
31
+		}
32
+	}
33
+	cmd(t, "rmi", "utest/docker:tag2")
34
+	{
35
+		imagesAfter, _, _ := cmd(t, "images", "-a")
36
+		if nLines(imagesAfter) != nLines(imagesBefore)+2 {
37
+			t.Fatalf("before: %#s\n\nafter: %#s\n", imagesBefore, imagesAfter)
38
+		}
39
+
40
+	}
41
+	cmd(t, "rmi", "utest:5000/docker:tag3")
42
+	{
43
+		imagesAfter, _, _ := cmd(t, "images", "-a")
44
+		if nLines(imagesAfter) != nLines(imagesBefore)+1 {
45
+			t.Fatalf("before: %#s\n\nafter: %#s\n", imagesBefore, imagesAfter)
46
+		}
47
+
48
+	}
49
+	cmd(t, "rmi", "utest:tag1")
50
+	{
51
+		imagesAfter, _, _ := cmd(t, "images", "-a")
52
+		if nLines(imagesAfter) != nLines(imagesBefore)+0 {
53
+			t.Fatalf("before: %#s\n\nafter: %#s\n", imagesBefore, imagesAfter)
54
+		}
55
+
56
+	}
57
+	logDone("tag,rmi- tagging the same images multiple times then removing tags")
58
+}
... ...
@@ -4,6 +4,7 @@ import (
4 4
 	"fmt"
5 5
 	"os/exec"
6 6
 	"strings"
7
+	"testing"
7 8
 )
8 9
 
9 10
 func deleteContainer(container string) error {
... ...
@@ -54,3 +55,9 @@ func deleteImages(images string) error {
54 54
 
55 55
 	return err
56 56
 }
57
+
58
+func cmd(t *testing.T, args ...string) (string, int, error) {
59
+	out, status, err := runCommandWithOutput(exec.Command(dockerBinary, args...))
60
+	errorOut(err, t, fmt.Sprintf("'%s' failed with errors: %v (%v)", strings.Join(args, " "), err, out))
61
+	return out, status, err
62
+}
... ...
@@ -107,3 +107,7 @@ func errorOutOnNonNilError(err error, t *testing.T, message string) {
107 107
 		t.Fatalf(message)
108 108
 	}
109 109
 }
110
+
111
+func nLines(s string) int {
112
+	return strings.Count(s, "\n")
113
+}
... ...
@@ -9,65 +9,6 @@ import (
9 9
 	"time"
10 10
 )
11 11
 
12
-func TestImageTagImageDelete(t *testing.T) {
13
-	eng := NewTestEngine(t)
14
-	defer mkRuntimeFromEngine(eng, t).Nuke()
15
-
16
-	srv := mkServerFromEngine(eng, t)
17
-
18
-	initialImages := getAllImages(eng, t)
19
-	if err := eng.Job("tag", unitTestImageName, "utest", "tag1").Run(); err != nil {
20
-		t.Fatal(err)
21
-	}
22
-
23
-	if err := eng.Job("tag", unitTestImageName, "utest/docker", "tag2").Run(); err != nil {
24
-		t.Fatal(err)
25
-	}
26
-
27
-	if err := eng.Job("tag", unitTestImageName, "utest:5000/docker", "tag3").Run(); err != nil {
28
-		t.Fatal(err)
29
-	}
30
-
31
-	images := getAllImages(eng, t)
32
-
33
-	nExpected := len(initialImages.Data[0].GetList("RepoTags")) + 3
34
-	nActual := len(images.Data[0].GetList("RepoTags"))
35
-	if nExpected != nActual {
36
-		t.Errorf("Expected %d images, %d found", nExpected, nActual)
37
-	}
38
-
39
-	if err := srv.DeleteImage("utest/docker:tag2", engine.NewTable("", 0), true, false, false); err != nil {
40
-		t.Fatal(err)
41
-	}
42
-
43
-	images = getAllImages(eng, t)
44
-
45
-	nExpected = len(initialImages.Data[0].GetList("RepoTags")) + 2
46
-	nActual = len(images.Data[0].GetList("RepoTags"))
47
-	if nExpected != nActual {
48
-		t.Errorf("Expected %d images, %d found", nExpected, nActual)
49
-	}
50
-
51
-	if err := srv.DeleteImage("utest:5000/docker:tag3", engine.NewTable("", 0), true, false, false); err != nil {
52
-		t.Fatal(err)
53
-	}
54
-
55
-	images = getAllImages(eng, t)
56
-
57
-	nExpected = len(initialImages.Data[0].GetList("RepoTags")) + 1
58
-	nActual = len(images.Data[0].GetList("RepoTags"))
59
-
60
-	if err := srv.DeleteImage("utest:tag1", engine.NewTable("", 0), true, false, false); err != nil {
61
-		t.Fatal(err)
62
-	}
63
-
64
-	images = getAllImages(eng, t)
65
-
66
-	if images.Len() != initialImages.Len() {
67
-		t.Errorf("Expected %d image, %d found", initialImages.Len(), images.Len())
68
-	}
69
-}
70
-
71 12
 func TestCreateRm(t *testing.T) {
72 13
 	eng := NewTestEngine(t)
73 14
 	defer mkRuntimeFromEngine(eng, t).Nuke()