Browse code

Merge pull request #8739 from duglin/CleanupDockerIgnores

Do some cleanup on .dockerignore paths

Tibor Vass authored on 2014/11/04 06:05:24
Showing 2 changed files
... ...
@@ -144,6 +144,11 @@ func (cli *DockerCli) CmdBuild(args ...string) error {
144 144
 			return fmt.Errorf("Error reading .dockerignore: '%s'", err)
145 145
 		}
146 146
 		for _, pattern := range strings.Split(string(ignore), "\n") {
147
+			pattern = strings.TrimSpace(pattern)
148
+			if pattern == "" {
149
+				continue
150
+			}
151
+			pattern = filepath.Clean(pattern)
147 152
 			ok, err := filepath.Match(pattern, "Dockerfile")
148 153
 			if err != nil {
149 154
 				return fmt.Errorf("Bad .dockerignore pattern: '%s', error: %s", pattern, err)
... ...
@@ -2669,6 +2669,29 @@ func TestBuildDockerignore(t *testing.T) {
2669 2669
 	logDone("build - test .dockerignore")
2670 2670
 }
2671 2671
 
2672
+func TestBuildDockerignoreCleanPaths(t *testing.T) {
2673
+	name := "testbuilddockerignorecleanpaths"
2674
+	defer deleteImages(name)
2675
+	dockerfile := `
2676
+        FROM busybox
2677
+        ADD . /tmp/
2678
+        RUN (! ls /tmp/foo) && (! ls /tmp/foo2) && (! ls /tmp/dir1/foo)`
2679
+	ctx, err := fakeContext(dockerfile, map[string]string{
2680
+		"foo":           "foo",
2681
+		"foo2":          "foo2",
2682
+		"dir1/foo":      "foo in dir1",
2683
+		".dockerignore": "./foo\ndir1//foo\n./dir1/../foo2",
2684
+	})
2685
+	if err != nil {
2686
+		t.Fatal(err)
2687
+	}
2688
+	defer ctx.Close()
2689
+	if _, err := buildImageFromContext(name, ctx, true); err != nil {
2690
+		t.Fatal(err)
2691
+	}
2692
+	logDone("build - test .dockerignore with clean paths")
2693
+}
2694
+
2672 2695
 func TestBuildDockerignoringDockerfile(t *testing.T) {
2673 2696
 	name := "testbuilddockerignoredockerfile"
2674 2697
 	defer deleteImages(name)
... ...
@@ -2678,13 +2701,20 @@ func TestBuildDockerignoringDockerfile(t *testing.T) {
2678 2678
 		"Dockerfile":    "FROM scratch",
2679 2679
 		".dockerignore": "Dockerfile\n",
2680 2680
 	})
2681
-	defer ctx.Close()
2682 2681
 	if err != nil {
2683 2682
 		t.Fatal(err)
2684 2683
 	}
2684
+	defer ctx.Close()
2685 2685
 	if _, err = buildImageFromContext(name, ctx, true); err == nil {
2686 2686
 		t.Fatalf("Didn't get expected error from ignoring Dockerfile")
2687 2687
 	}
2688
+
2689
+	// now try it with ./Dockerfile
2690
+	ctx.Add(".dockerignore", "./Dockerfile\n")
2691
+	if _, err = buildImageFromContext(name, ctx, true); err == nil {
2692
+		t.Fatalf("Didn't get expected error from ignoring ./Dockerfile")
2693
+	}
2694
+
2688 2695
 	logDone("build - test .dockerignore of Dockerfile")
2689 2696
 }
2690 2697