mirror of
https://github.com/clearlinux/docker.git
synced 2026-10-04 07:48:44 +00:00
Have .dockerignore support Dockerfile/.dockerignore
If .dockerignore mentions either then the client will send them to the daemon but the daemon will erase them after the Dockerfile has been parsed to simulate them never being sent in the first place. an events test kept failing for me so I tried to fix that too Closes #8330 Signed-off-by: Doug Davis <dug@us.ibm.com>
This commit is contained in:
@@ -3131,28 +3131,106 @@ func TestBuildDockerignoringDockerfile(t *testing.T) {
|
||||
name := "testbuilddockerignoredockerfile"
|
||||
defer deleteImages(name)
|
||||
dockerfile := `
|
||||
FROM scratch`
|
||||
FROM busybox
|
||||
ADD . /tmp/
|
||||
RUN ! ls /tmp/Dockerfile
|
||||
RUN ls /tmp/.dockerignore`
|
||||
ctx, err := fakeContext(dockerfile, map[string]string{
|
||||
"Dockerfile": "FROM scratch",
|
||||
"Dockerfile": dockerfile,
|
||||
".dockerignore": "Dockerfile\n",
|
||||
})
|
||||
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")
|
||||
if _, err = buildImageFromContext(name, ctx, true); err != nil {
|
||||
t.Fatalf("Didn't ignore Dockerfile correctly:%s", err)
|
||||
}
|
||||
|
||||
// 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")
|
||||
if _, err = buildImageFromContext(name, ctx, true); err != nil {
|
||||
t.Fatalf("Didn't ignore ./Dockerfile correctly:%s", err)
|
||||
}
|
||||
|
||||
logDone("build - test .dockerignore of Dockerfile")
|
||||
}
|
||||
|
||||
func TestBuildDockerignoringDockerignore(t *testing.T) {
|
||||
name := "testbuilddockerignoredockerignore"
|
||||
defer deleteImages(name)
|
||||
dockerfile := `
|
||||
FROM busybox
|
||||
ADD . /tmp/
|
||||
RUN ! ls /tmp/.dockerignore
|
||||
RUN ls /tmp/Dockerfile`
|
||||
ctx, err := fakeContext(dockerfile, map[string]string{
|
||||
"Dockerfile": dockerfile,
|
||||
".dockerignore": ".dockerignore\n",
|
||||
})
|
||||
defer ctx.Close()
|
||||
if err != nil {
|
||||
t.Fatal(err)
|
||||
}
|
||||
if _, err = buildImageFromContext(name, ctx, true); err != nil {
|
||||
t.Fatalf("Didn't ignore .dockerignore correctly:%s", err)
|
||||
}
|
||||
logDone("build - test .dockerignore of .dockerignore")
|
||||
}
|
||||
|
||||
func TestBuildDockerignoreTouchDockerfile(t *testing.T) {
|
||||
var id1 string
|
||||
var id2 string
|
||||
|
||||
name := "testbuilddockerignoretouchdockerfile"
|
||||
defer deleteImages(name)
|
||||
dockerfile := `
|
||||
FROM busybox
|
||||
ADD . /tmp/`
|
||||
ctx, err := fakeContext(dockerfile, map[string]string{
|
||||
"Dockerfile": dockerfile,
|
||||
".dockerignore": "Dockerfile\n",
|
||||
})
|
||||
defer ctx.Close()
|
||||
if err != nil {
|
||||
t.Fatal(err)
|
||||
}
|
||||
|
||||
if id1, err = buildImageFromContext(name, ctx, true); err != nil {
|
||||
t.Fatalf("Didn't build it correctly:%s", err)
|
||||
}
|
||||
|
||||
if id2, err = buildImageFromContext(name, ctx, true); err != nil {
|
||||
t.Fatalf("Didn't build it correctly:%s", err)
|
||||
}
|
||||
if id1 != id2 {
|
||||
t.Fatalf("Didn't use the cache - 1")
|
||||
}
|
||||
|
||||
// Now make sure touching Dockerfile doesn't invalidate the cache
|
||||
if err = ctx.Add("Dockerfile", dockerfile+"\n# hi"); err != nil {
|
||||
t.Fatalf("Didn't add Dockerfile: %s", err)
|
||||
}
|
||||
if id2, err = buildImageFromContext(name, ctx, true); err != nil {
|
||||
t.Fatalf("Didn't build it correctly:%s", err)
|
||||
}
|
||||
if id1 != id2 {
|
||||
t.Fatalf("Didn't use the cache - 2")
|
||||
}
|
||||
|
||||
// One more time but just 'touch' it instead of changing the content
|
||||
if err = ctx.Add("Dockerfile", dockerfile+"\n# hi"); err != nil {
|
||||
t.Fatalf("Didn't add Dockerfile: %s", err)
|
||||
}
|
||||
if id2, err = buildImageFromContext(name, ctx, true); err != nil {
|
||||
t.Fatalf("Didn't build it correctly:%s", err)
|
||||
}
|
||||
if id1 != id2 {
|
||||
t.Fatalf("Didn't use the cache - 3")
|
||||
}
|
||||
|
||||
logDone("build - test .dockerignore touch dockerfile")
|
||||
}
|
||||
|
||||
func TestBuildDockerignoringWholeDir(t *testing.T) {
|
||||
name := "testbuilddockerignorewholedir"
|
||||
defer deleteImages(name)
|
||||
|
||||
@@ -10,14 +10,13 @@ import (
|
||||
)
|
||||
|
||||
func TestEventsUntag(t *testing.T) {
|
||||
out, _, _ := dockerCmd(t, "images", "-q")
|
||||
image := strings.Split(out, "\n")[0]
|
||||
image := "busybox"
|
||||
dockerCmd(t, "tag", image, "utest:tag1")
|
||||
dockerCmd(t, "tag", image, "utest:tag2")
|
||||
dockerCmd(t, "rmi", "utest:tag1")
|
||||
dockerCmd(t, "rmi", "utest:tag2")
|
||||
eventsCmd := exec.Command("timeout", "0.2", dockerBinary, "events", "--since=1")
|
||||
out, _, _ = runCommandWithOutput(eventsCmd)
|
||||
out, _, _ := runCommandWithOutput(eventsCmd)
|
||||
events := strings.Split(out, "\n")
|
||||
nEvents := len(events)
|
||||
// The last element after the split above will be an empty string, so we
|
||||
|
||||
Reference in New Issue
Block a user