Просмотр исходного кода

make compose pull tests more expressive

Signed-off-by: Vedant Koditkar <[email protected]>
Vedant Koditkar 3 лет назад
Родитель
Сommit
0db6dfee03

+ 39 - 21
pkg/e2e/compose_test.go

@@ -122,31 +122,49 @@ func TestLocalComposeUp(t *testing.T) {
 func TestComposePull(t *testing.T) {
 	c := NewParallelCLI(t)
 
-	res := c.RunDockerComposeCmd(t, "--project-directory", "fixtures/simple-composefile", "pull")
-	output := res.Combined()
-
-	expected := []string{
-		"Skipped - No image to be pulled",
-		"Skipped - Image is already present locally",
-		"Skipped - Image is already being pulled by",
-		"simple Pulled",
-		"another Pulled",
-	}
-
-	assert.Assert(t, contains(output, expected))
-}
+	t.Run("Verify image pulled", func(t *testing.T) {
+		// cleanup existing images
+		c.RunDockerComposeCmd(t, "--project-directory", "fixtures/compose-pull/simple", "down", "--rmi", "all")
+
+		res := c.RunDockerComposeCmd(t, "--project-directory", "fixtures/compose-pull/simple", "pull")
+		output := res.Combined()
+
+		assert.Assert(t, strings.Contains(output, "simple Pulled"))
+		assert.Assert(t, strings.Contains(output, "another Pulled"))
+	})
+
+	t.Run("Verify a image is pulled once", func(t *testing.T) {
+		// cleanup existing images
+		c.RunDockerComposeCmd(t, "--project-directory", "fixtures/compose-pull/duplicate-images", "down", "--rmi", "all")
 
-func contains(str string, array []string) bool {
-	found := false
+		res := c.RunDockerComposeCmd(t, "--project-directory", "fixtures/compose-pull/duplicate-images", "pull")
+		output := res.Combined()
 
-	for _, val := range array {
-		if strings.Contains(str, val) {
-			found = true
-			break
+		if strings.Contains(output, "another Pulled") {
+			assert.Assert(t, strings.Contains(output, "another Pulled"))
+			assert.Assert(t, strings.Contains(output, "Skipped - Image is already being pulled by another"))
+		} else {
+			assert.Assert(t, strings.Contains(output, "simple Pulled"))
+			assert.Assert(t, strings.Contains(output, "Skipped - Image is already being pulled by simple"))
 		}
-	}
+	})
 
-	return found
+	t.Run("Verify skipped pull if image is already present locally", func(t *testing.T) {
+		// make sure the requied image is present
+		c.RunDockerCmd(t, "pull", "alpine")
+
+		res := c.RunDockerComposeCmd(t, "--project-directory", "fixtures/compose-pull/image-present-locally", "pull")
+		output := res.Combined()
+
+		assert.Assert(t, strings.Contains(output, "Skipped - Image is already present locally"))
+	})
+
+	t.Run("Verify skipped no image to be pulled", func(t *testing.T) {
+		res := c.RunDockerComposeCmd(t, "--project-directory", "fixtures/compose-pull/no-image-name-given", "pull")
+		output := res.Combined()
+
+		assert.Assert(t, strings.Contains(output, "Skipped - No image to be pulled"))
+	})
 }
 
 func TestDownComposefileInParentFolder(t *testing.T) {

+ 7 - 0
pkg/e2e/fixtures/compose-pull/duplicate-images/docker-compose.yaml

@@ -0,0 +1,7 @@
+services:
+  simple:
+    image: alpine:3.13
+    command: top
+  another:
+    image: alpine:3.13
+    command: top

+ 4 - 0
pkg/e2e/fixtures/compose-pull/image-present-locally/docker-compose.yaml

@@ -0,0 +1,4 @@
+services:
+  simple:
+    image: alpine
+    command: top

+ 3 - 0
pkg/e2e/fixtures/compose-pull/no-image-name-given/docker-compose.yaml

@@ -0,0 +1,3 @@
+services:
+  no-image-service:
+    build: .

+ 7 - 0
pkg/e2e/fixtures/compose-pull/simple/docker-compose.yaml

@@ -0,0 +1,7 @@
+services:
+  simple:
+    image: alpine:3.14
+    command: top
+  another:
+    image: alpine:3.15
+    command: top