Do some cleanup on .dockerignore paths
| ... | ... |
@@ -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 |
|