Merge pull request #8739 from duglin/CleanupDockerIgnores

Do some cleanup on .dockerignore paths
This commit is contained in:
Tibor Vass 2014-11-03 16:05:24 -05:00
commit a85f58719f
2 changed files with 36 additions and 1 deletions

View File

@ -144,6 +144,11 @@ func (cli *DockerCli) CmdBuild(args ...string) error {
return fmt.Errorf("Error reading .dockerignore: '%s'", err) return fmt.Errorf("Error reading .dockerignore: '%s'", err)
} }
for _, pattern := range strings.Split(string(ignore), "\n") { for _, pattern := range strings.Split(string(ignore), "\n") {
pattern = strings.TrimSpace(pattern)
if pattern == "" {
continue
}
pattern = filepath.Clean(pattern)
ok, err := filepath.Match(pattern, "Dockerfile") ok, err := filepath.Match(pattern, "Dockerfile")
if err != nil { if err != nil {
return fmt.Errorf("Bad .dockerignore pattern: '%s', error: %s", pattern, err) return fmt.Errorf("Bad .dockerignore pattern: '%s', error: %s", pattern, err)

View File

@ -2669,6 +2669,29 @@ func TestBuildDockerignore(t *testing.T) {
logDone("build - test .dockerignore") logDone("build - test .dockerignore")
} }
func TestBuildDockerignoreCleanPaths(t *testing.T) {
name := "testbuilddockerignorecleanpaths"
defer deleteImages(name)
dockerfile := `
FROM busybox
ADD . /tmp/
RUN (! ls /tmp/foo) && (! ls /tmp/foo2) && (! ls /tmp/dir1/foo)`
ctx, err := fakeContext(dockerfile, map[string]string{
"foo": "foo",
"foo2": "foo2",
"dir1/foo": "foo in dir1",
".dockerignore": "./foo\ndir1//foo\n./dir1/../foo2",
})
if err != nil {
t.Fatal(err)
}
defer ctx.Close()
if _, err := buildImageFromContext(name, ctx, true); err != nil {
t.Fatal(err)
}
logDone("build - test .dockerignore with clean paths")
}
func TestBuildDockerignoringDockerfile(t *testing.T) { func TestBuildDockerignoringDockerfile(t *testing.T) {
name := "testbuilddockerignoredockerfile" name := "testbuilddockerignoredockerfile"
defer deleteImages(name) defer deleteImages(name)
@ -2678,13 +2701,20 @@ func TestBuildDockerignoringDockerfile(t *testing.T) {
"Dockerfile": "FROM scratch", "Dockerfile": "FROM scratch",
".dockerignore": "Dockerfile\n", ".dockerignore": "Dockerfile\n",
}) })
defer ctx.Close()
if err != nil { if err != nil {
t.Fatal(err) t.Fatal(err)
} }
defer ctx.Close()
if _, err = buildImageFromContext(name, ctx, true); err == nil { if _, err = buildImageFromContext(name, ctx, true); err == nil {
t.Fatalf("Didn't get expected error from ignoring Dockerfile") t.Fatalf("Didn't get expected error from ignoring Dockerfile")
} }
// now try it with ./Dockerfile
ctx.Add(".dockerignore", "./Dockerfile\n")
if _, err = buildImageFromContext(name, ctx, true); err == nil {
t.Fatalf("Didn't get expected error from ignoring ./Dockerfile")
}
logDone("build - test .dockerignore of Dockerfile") logDone("build - test .dockerignore of Dockerfile")
} }