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
Родитель 38d3888194 c0f0f5c988
Коммит a85f58719f
2 изменённых файлов: 36 добавлений и 1 удалений

Просмотреть файл

@ -144,6 +144,11 @@ func (cli *DockerCli) CmdBuild(args ...string) error {
return fmt.Errorf("Error reading .dockerignore: '%s'", err)
}
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")
if err != nil {
return fmt.Errorf("Bad .dockerignore pattern: '%s', error: %s", pattern, err)

Просмотреть файл

@ -2669,6 +2669,29 @@ func TestBuildDockerignore(t *testing.T) {
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) {
name := "testbuilddockerignoredockerfile"
defer deleteImages(name)
@ -2678,13 +2701,20 @@ func TestBuildDockerignoringDockerfile(t *testing.T) {
"Dockerfile": "FROM scratch",
".dockerignore": "Dockerfile\n",
})
defer ctx.Close()
if err != nil {
t.Fatal(err)
}
defer ctx.Close()
if _, err = buildImageFromContext(name, ctx, true); err == nil {
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")
}