From f81562b040e36e350b15c614dd666a90092036e4 Mon Sep 17 00:00:00 2001 From: Alexandr Morozov Date: Tue, 17 Jun 2014 10:08:14 +0400 Subject: [PATCH 01/11] Move TestBuildEntrypointRunCleanup to integration-cli Docker-DCO-1.1-Signed-off-by: Alexandr Morozov (github: LK4D4) Upstream-commit: c5b82f5e8dd5c519330e02502e5b9f9031a6509a Component: engine --- .../integration-cli/docker_cli_build_test.go | 37 +++++++++++++++++++ .../engine/integration/buildfile_test.go | 31 ---------------- 2 files changed, 37 insertions(+), 31 deletions(-) diff --git a/components/engine/integration-cli/docker_cli_build_test.go b/components/engine/integration-cli/docker_cli_build_test.go index f000235843..1ece73a1b6 100644 --- a/components/engine/integration-cli/docker_cli_build_test.go +++ b/components/engine/integration-cli/docker_cli_build_test.go @@ -1133,3 +1133,40 @@ func TestBuildWithVolumeOwnership(t *testing.T) { logDone("build - volume ownership") } + +// testing #1405 - config.Cmd does not get cleaned up if +// utilizing cache +func TestBuildEntrypointRunCleanup(t *testing.T) { + name := "testbuildcmdcleanup" + defer deleteImages(name) + if _, err := buildImage(name, + `FROM busybox + RUN echo "hello"`, + true); err != nil { + t.Fatal(err) + } + + ctx, err := fakeContext(`FROM busybox + RUN echo "hello" + ADD foo /foo + ENTRYPOINT ["/bin/echo"]`, + map[string]string{ + "foo": "hello", + }) + defer ctx.Close() + if err != nil { + t.Fatal(err) + } + if _, err := buildImageFromContext(name, ctx, true); err != nil { + t.Fatal(err) + } + res, err := inspectField(name, "Config.Cmd") + if err != nil { + t.Fatal(err) + } + // Cmd inherited from busybox, maybe will be fixed in #5147 + if expected := "[/bin/sh]"; res != expected { + t.Fatalf("Cmd %s, expected %s", res, expected) + } + logDone("build - cleanup cmd after RUN") +} diff --git a/components/engine/integration/buildfile_test.go b/components/engine/integration/buildfile_test.go index 8c02cf043c..89412f9580 100644 --- a/components/engine/integration/buildfile_test.go +++ b/components/engine/integration/buildfile_test.go @@ -414,37 +414,6 @@ func buildImage(context testContextTemplate, t *testing.T, eng *engine.Engine, u return image, err } -// testing #1405 - config.Cmd does not get cleaned up if -// utilizing cache -func TestBuildEntrypointRunCleanup(t *testing.T) { - eng := NewTestEngine(t) - defer nuke(mkDaemonFromEngine(eng, t)) - - img, err := buildImage(testContextTemplate{` - from {IMAGE} - run echo "hello" - `, - nil, nil}, t, eng, true) - if err != nil { - t.Fatal(err) - } - - img, err = buildImage(testContextTemplate{` - from {IMAGE} - run echo "hello" - add foo /foo - entrypoint ["/bin/echo"] - `, - [][2]string{{"foo", "HEYO"}}, nil}, t, eng, true) - if err != nil { - t.Fatal(err) - } - - if len(img.Config.Cmd) != 0 { - t.Fail() - } -} - func TestForbiddenContextPath(t *testing.T) { eng := NewTestEngine(t) defer nuke(mkDaemonFromEngine(eng, t)) From f7987f5c931fa8b341dfd6646806f81e53bb49ee Mon Sep 17 00:00:00 2001 From: Alexandr Morozov Date: Tue, 17 Jun 2014 10:26:42 +0400 Subject: [PATCH 02/11] Move TestForbiddenContextPath to integration-cli Docker-DCO-1.1-Signed-off-by: Alexandr Morozov (github: LK4D4) Upstream-commit: 686786f107582c27c69a6f40655c8fc52a8e4d00 Component: engine --- .../integration-cli/docker_cli_build_test.go | 25 ++++++++++ .../engine/integration/buildfile_test.go | 48 ------------------- 2 files changed, 25 insertions(+), 48 deletions(-) diff --git a/components/engine/integration-cli/docker_cli_build_test.go b/components/engine/integration-cli/docker_cli_build_test.go index 1ece73a1b6..06cd0018ec 100644 --- a/components/engine/integration-cli/docker_cli_build_test.go +++ b/components/engine/integration-cli/docker_cli_build_test.go @@ -1170,3 +1170,28 @@ func TestBuildEntrypointRunCleanup(t *testing.T) { } logDone("build - cleanup cmd after RUN") } + +func TestBuldForbiddenContextPath(t *testing.T) { + name := "testbuildforbidpath" + defer deleteImages(name) + ctx, err := fakeContext(`FROM scratch + ADD ../../ test/ + `, + map[string]string{ + "test.txt": "test1", + "other.txt": "other", + }) + + defer ctx.Close() + if err != nil { + t.Fatal(err) + } + if _, err := buildImageFromContext(name, ctx, true); err != nil { + if !strings.Contains(err.Error(), "Forbidden path outside the build context: ../../ (/)") { + t.Fatal("Wrong error, must be about forbidden ../../ path") + } + } else { + t.Fatal("Error must not be nil") + } + logDone("build - forbidden context path") +} diff --git a/components/engine/integration/buildfile_test.go b/components/engine/integration/buildfile_test.go index 89412f9580..14fe20b3ed 100644 --- a/components/engine/integration/buildfile_test.go +++ b/components/engine/integration/buildfile_test.go @@ -414,54 +414,6 @@ func buildImage(context testContextTemplate, t *testing.T, eng *engine.Engine, u return image, err } -func TestForbiddenContextPath(t *testing.T) { - eng := NewTestEngine(t) - defer nuke(mkDaemonFromEngine(eng, t)) - srv := mkServerFromEngine(eng, t) - - context := testContextTemplate{` - from {IMAGE} - maintainer dockerio - add ../../ test/ - `, - [][2]string{{"test.txt", "test1"}, {"other.txt", "other"}}, nil} - - httpServer, err := mkTestingFileServer(context.remoteFiles) - if err != nil { - t.Fatal(err) - } - defer httpServer.Close() - - idx := strings.LastIndex(httpServer.URL, ":") - if idx < 0 { - t.Fatalf("could not get port from test http server address %s", httpServer.URL) - } - port := httpServer.URL[idx+1:] - - iIP := eng.Hack_GetGlobalVar("httpapi.bridgeIP") - if iIP == nil { - t.Fatal("Legacy bridgeIP field not set in engine") - } - ip, ok := iIP.(net.IP) - if !ok { - panic("Legacy bridgeIP field in engine does not cast to net.IP") - } - dockerfile := constructDockerfile(context.dockerfile, ip, port) - - buildfile := server.NewBuildFile(srv, ioutil.Discard, ioutil.Discard, false, true, false, false, ioutil.Discard, utils.NewStreamFormatter(false), nil, nil) - _, err = buildfile.Build(context.Archive(dockerfile, t)) - - if err == nil { - t.Log("Error should not be nil") - t.Fail() - } - - if err.Error() != "Forbidden path outside the build context: ../../ (/)" { - t.Logf("Error message is not expected: %s", err.Error()) - t.Fail() - } -} - func TestBuildADDFileNotFound(t *testing.T) { eng := NewTestEngine(t) defer nuke(mkDaemonFromEngine(eng, t)) From fd55280b29efda4e2e255e8e1e032f9b04bececa Mon Sep 17 00:00:00 2001 From: Alexandr Morozov Date: Tue, 17 Jun 2014 10:35:29 +0400 Subject: [PATCH 03/11] Move TestBuildADDFileNotFound to integration-cli Docker-DCO-1.1-Signed-off-by: Alexandr Morozov (github: LK4D4) Upstream-commit: 62d97afaf8d328b42c028323f10c3f4782f03561 Component: engine --- .../integration-cli/docker_cli_build_test.go | 20 ++++++++ .../engine/integration/buildfile_test.go | 46 ------------------- 2 files changed, 20 insertions(+), 46 deletions(-) diff --git a/components/engine/integration-cli/docker_cli_build_test.go b/components/engine/integration-cli/docker_cli_build_test.go index 06cd0018ec..b8d57c49db 100644 --- a/components/engine/integration-cli/docker_cli_build_test.go +++ b/components/engine/integration-cli/docker_cli_build_test.go @@ -1195,3 +1195,23 @@ func TestBuldForbiddenContextPath(t *testing.T) { } logDone("build - forbidden context path") } + +func TestBuildADDFileNotFound(t *testing.T) { + name := "testbuildaddnotfound" + defer deleteImages(name) + ctx, err := fakeContext(`FROM scratch + ADD foo /usr/local/bar`, + map[string]string{"bar": "hello"}) + defer ctx.Close() + if err != nil { + t.Fatal(err) + } + if _, err := buildImageFromContext(name, ctx, true); err != nil { + if !strings.Contains(err.Error(), "foo: no such file or directory") { + t.Fatalf("Wrong error %v, must be about missing foo file or directory", err) + } + } else { + t.Fatal("Error must not be nil") + } + logDone("build - add file not found") +} diff --git a/components/engine/integration/buildfile_test.go b/components/engine/integration/buildfile_test.go index 14fe20b3ed..640de5653a 100644 --- a/components/engine/integration/buildfile_test.go +++ b/components/engine/integration/buildfile_test.go @@ -414,52 +414,6 @@ func buildImage(context testContextTemplate, t *testing.T, eng *engine.Engine, u return image, err } -func TestBuildADDFileNotFound(t *testing.T) { - eng := NewTestEngine(t) - defer nuke(mkDaemonFromEngine(eng, t)) - - context := testContextTemplate{` - from {IMAGE} - add foo /usr/local/bar - `, - nil, nil} - - httpServer, err := mkTestingFileServer(context.remoteFiles) - if err != nil { - t.Fatal(err) - } - defer httpServer.Close() - - idx := strings.LastIndex(httpServer.URL, ":") - if idx < 0 { - t.Fatalf("could not get port from test http server address %s", httpServer.URL) - } - port := httpServer.URL[idx+1:] - - iIP := eng.Hack_GetGlobalVar("httpapi.bridgeIP") - if iIP == nil { - t.Fatal("Legacy bridgeIP field not set in engine") - } - ip, ok := iIP.(net.IP) - if !ok { - panic("Legacy bridgeIP field in engine does not cast to net.IP") - } - dockerfile := constructDockerfile(context.dockerfile, ip, port) - - buildfile := server.NewBuildFile(mkServerFromEngine(eng, t), ioutil.Discard, ioutil.Discard, false, true, false, false, ioutil.Discard, utils.NewStreamFormatter(false), nil, nil) - _, err = buildfile.Build(context.Archive(dockerfile, t)) - - if err == nil { - t.Log("Error should not be nil") - t.Fail() - } - - if err.Error() != "foo: no such file or directory" { - t.Logf("Error message is not expected: %s", err.Error()) - t.Fail() - } -} - func TestBuildInheritance(t *testing.T) { eng := NewTestEngine(t) defer nuke(mkDaemonFromEngine(eng, t)) From 285461876dcd1940c4964a96971d331248da4390 Mon Sep 17 00:00:00 2001 From: Alexandr Morozov Date: Tue, 17 Jun 2014 10:50:51 +0400 Subject: [PATCH 04/11] Move TestBuildInheritance to integration-cli Docker-DCO-1.1-Signed-off-by: Alexandr Morozov (github: LK4D4) Upstream-commit: f1d7ed35bd17c5e8e8f4d1882b5e98ae5419e9f1 Component: engine --- .../integration-cli/docker_cli_build_test.go | 41 +++++++++++++++++++ .../engine/integration/buildfile_test.go | 36 ---------------- 2 files changed, 41 insertions(+), 36 deletions(-) diff --git a/components/engine/integration-cli/docker_cli_build_test.go b/components/engine/integration-cli/docker_cli_build_test.go index b8d57c49db..98eee5807c 100644 --- a/components/engine/integration-cli/docker_cli_build_test.go +++ b/components/engine/integration-cli/docker_cli_build_test.go @@ -1215,3 +1215,44 @@ func TestBuildADDFileNotFound(t *testing.T) { } logDone("build - add file not found") } + +func TestBuildInheritance(t *testing.T) { + name := "testbuildinheritance" + defer deleteImages(name) + + _, err := buildImage(name, + `FROM scratch + EXPOSE 2375`, + true) + if err != nil { + t.Fatal(err) + } + ports1, err := inspectField(name, "Config.ExposedPorts") + if err != nil { + t.Fatal(err) + } + + _, err = buildImage(name, + fmt.Sprintf(`FROM %s + ENTRYPOINT ["/bin/echo"]`, name), + true) + if err != nil { + t.Fatal(err) + } + + res, err := inspectField(name, "Config.Entrypoint") + if err != nil { + t.Fatal(err) + } + if expected := "[/bin/echo]"; res != expected { + t.Fatalf("Entrypoint %s, expected %s", res, expected) + } + ports2, err := inspectField(name, "Config.ExposedPorts") + if err != nil { + t.Fatal(err) + } + if ports1 != ports2 { + t.Fatalf("Ports must be same: %s != %s", ports1, ports2) + } + logDone("build - inheritance") +} diff --git a/components/engine/integration/buildfile_test.go b/components/engine/integration/buildfile_test.go index 640de5653a..4a14076942 100644 --- a/components/engine/integration/buildfile_test.go +++ b/components/engine/integration/buildfile_test.go @@ -14,7 +14,6 @@ import ( "github.com/dotcloud/docker/archive" "github.com/dotcloud/docker/engine" "github.com/dotcloud/docker/image" - "github.com/dotcloud/docker/nat" "github.com/dotcloud/docker/server" "github.com/dotcloud/docker/utils" ) @@ -414,41 +413,6 @@ func buildImage(context testContextTemplate, t *testing.T, eng *engine.Engine, u return image, err } -func TestBuildInheritance(t *testing.T) { - eng := NewTestEngine(t) - defer nuke(mkDaemonFromEngine(eng, t)) - - img, err := buildImage(testContextTemplate{` - from {IMAGE} - expose 2375 - `, - nil, nil}, t, eng, true) - - if err != nil { - t.Fatal(err) - } - - img2, _ := buildImage(testContextTemplate{fmt.Sprintf(` - from %s - entrypoint ["/bin/echo"] - `, img.ID), - nil, nil}, t, eng, true) - - if err != nil { - t.Fatal(err) - } - - // from child - if img2.Config.Entrypoint[0] != "/bin/echo" { - t.Fail() - } - - // from parent - if _, exists := img.Config.ExposedPorts[nat.NewPort("tcp", "2375")]; !exists { - t.Fail() - } -} - func TestBuildFails(t *testing.T) { _, err := buildImage(testContextTemplate{` from {IMAGE} From 85c70b022ee7d186fbec44139920863dfb4c9b09 Mon Sep 17 00:00:00 2001 From: Alexandr Morozov Date: Tue, 17 Jun 2014 10:57:32 +0400 Subject: [PATCH 05/11] Move TestBuildFails to integration-cli Docker-DCO-1.1-Signed-off-by: Alexandr Morozov (github: LK4D4) Upstream-commit: d3023f25f5c9e1173fe1cf1dbb449a926dc85cfd Component: engine --- .../integration-cli/docker_cli_build_test.go | 17 ++++++++++++++++ .../engine/integration/buildfile_test.go | 20 ------------------- 2 files changed, 17 insertions(+), 20 deletions(-) diff --git a/components/engine/integration-cli/docker_cli_build_test.go b/components/engine/integration-cli/docker_cli_build_test.go index 98eee5807c..8b46357a80 100644 --- a/components/engine/integration-cli/docker_cli_build_test.go +++ b/components/engine/integration-cli/docker_cli_build_test.go @@ -1256,3 +1256,20 @@ func TestBuildInheritance(t *testing.T) { } logDone("build - inheritance") } + +func TestBuildFails(t *testing.T) { + name := "testbuildfails" + defer deleteImages(name) + _, err := buildImage(name, + `FROM busybox + RUN sh -c "exit 23"`, + true) + if err != nil { + if !strings.Contains(err.Error(), "returned a non-zero code: 23") { + t.Fatalf("Wrong error %v, must be about non-zero code 23", err) + } + } else { + t.Fatal("Error must not be nil") + } + logDone("build - fails") +} diff --git a/components/engine/integration/buildfile_test.go b/components/engine/integration/buildfile_test.go index 4a14076942..833d2b6789 100644 --- a/components/engine/integration/buildfile_test.go +++ b/components/engine/integration/buildfile_test.go @@ -413,26 +413,6 @@ func buildImage(context testContextTemplate, t *testing.T, eng *engine.Engine, u return image, err } -func TestBuildFails(t *testing.T) { - _, err := buildImage(testContextTemplate{` - from {IMAGE} - run sh -c "exit 23" - `, - nil, nil}, t, nil, true) - - if err == nil { - t.Fatal("Error should not be nil") - } - - sterr, ok := err.(*utils.JSONError) - if !ok { - t.Fatalf("Error should be utils.JSONError") - } - if sterr.Code != 23 { - t.Fatalf("StatusCode %d unexpected, should be 23", sterr.Code) - } -} - func TestBuildFailsDockerfileEmpty(t *testing.T) { _, err := buildImage(testContextTemplate{``, nil, nil}, t, nil, true) From 0c3b5a8a2c3be9911d83a2e53ccda71cce3bf2fb Mon Sep 17 00:00:00 2001 From: Alexandr Morozov Date: Tue, 17 Jun 2014 11:04:07 +0400 Subject: [PATCH 06/11] Move TestBuildFailsDockerfileEmpty to integration-cli Docker-DCO-1.1-Signed-off-by: Alexandr Morozov (github: LK4D4) Upstream-commit: 08a10f936b4b5a69d3be6d320499c025a399fddb Component: engine --- .../integration-cli/docker_cli_build_test.go | 14 ++++++++++++++ components/engine/integration/buildfile_test.go | 8 -------- 2 files changed, 14 insertions(+), 8 deletions(-) diff --git a/components/engine/integration-cli/docker_cli_build_test.go b/components/engine/integration-cli/docker_cli_build_test.go index 8b46357a80..bebb691bd2 100644 --- a/components/engine/integration-cli/docker_cli_build_test.go +++ b/components/engine/integration-cli/docker_cli_build_test.go @@ -1273,3 +1273,17 @@ func TestBuildFails(t *testing.T) { } logDone("build - fails") } + +func TestBuildFailsDockerfileEmpty(t *testing.T) { + name := "testbuildfails" + defer deleteImages(name) + _, err := buildImage(name, ``, true) + if err != nil { + if !strings.Contains(err.Error(), "Dockerfile cannot be empty") { + t.Fatalf("Wrong error %v, must be about empty Dockerfile", err) + } + } else { + t.Fatal("Error must not be nil") + } + logDone("build - fails with empty dockerfile") +} diff --git a/components/engine/integration/buildfile_test.go b/components/engine/integration/buildfile_test.go index 833d2b6789..231aa9975f 100644 --- a/components/engine/integration/buildfile_test.go +++ b/components/engine/integration/buildfile_test.go @@ -413,14 +413,6 @@ func buildImage(context testContextTemplate, t *testing.T, eng *engine.Engine, u return image, err } -func TestBuildFailsDockerfileEmpty(t *testing.T) { - _, err := buildImage(testContextTemplate{``, nil, nil}, t, nil, true) - - if err != server.ErrDockerfileEmpty { - t.Fatal("Expected: %v, got: %v", server.ErrDockerfileEmpty, err) - } -} - func TestBuildOnBuildTrigger(t *testing.T) { _, err := buildImage(testContextTemplate{` from {IMAGE} From 417be2b8be637b0722569d75349e33979ce590ca Mon Sep 17 00:00:00 2001 From: Alexandr Morozov Date: Tue, 17 Jun 2014 11:14:45 +0400 Subject: [PATCH 07/11] Move TestBuildOnBuildTrigger to integration-cli Docker-DCO-1.1-Signed-off-by: Alexandr Morozov (github: LK4D4) Upstream-commit: 2629e2ec236a377973e7be296013e366b4074d44 Component: engine --- .../integration-cli/docker_cli_build_test.go | 20 +++++++++++++++++++ .../engine/integration/buildfile_test.go | 16 --------------- 2 files changed, 20 insertions(+), 16 deletions(-) diff --git a/components/engine/integration-cli/docker_cli_build_test.go b/components/engine/integration-cli/docker_cli_build_test.go index bebb691bd2..48ac7e5861 100644 --- a/components/engine/integration-cli/docker_cli_build_test.go +++ b/components/engine/integration-cli/docker_cli_build_test.go @@ -1287,3 +1287,23 @@ func TestBuildFailsDockerfileEmpty(t *testing.T) { } logDone("build - fails with empty dockerfile") } + +func TestBuildOnBuild(t *testing.T) { + name := "testbuildonbuild" + defer deleteImages(name) + _, err := buildImage(name, + `FROM busybox + ONBUILD RUN touch foobar`, + true) + if err != nil { + t.Fatal(err) + } + _, err = buildImage(name, + fmt.Sprintf(`FROM %s + RUN [ -f foobar ]`, name), + true) + if err != nil { + t.Fatal(err) + } + logDone("build - onbuild") +} diff --git a/components/engine/integration/buildfile_test.go b/components/engine/integration/buildfile_test.go index 231aa9975f..7b8fd7b178 100644 --- a/components/engine/integration/buildfile_test.go +++ b/components/engine/integration/buildfile_test.go @@ -413,22 +413,6 @@ func buildImage(context testContextTemplate, t *testing.T, eng *engine.Engine, u return image, err } -func TestBuildOnBuildTrigger(t *testing.T) { - _, err := buildImage(testContextTemplate{` - from {IMAGE} - onbuild run echo here is the trigger - onbuild run touch foobar - `, - nil, nil, - }, - t, nil, true, - ) - if err != nil { - t.Fatal(err) - } - // FIXME: test that the 'foobar' file was created in the final build. -} - func TestBuildOnBuildForbiddenChainedTrigger(t *testing.T) { _, err := buildImage(testContextTemplate{` from {IMAGE} From 17786f89f87fd20538bf050eddc69843b8b835b2 Mon Sep 17 00:00:00 2001 From: Alexandr Morozov Date: Tue, 17 Jun 2014 11:24:47 +0400 Subject: [PATCH 08/11] Move TestBuildOnBuildForbiddenChainedTrigger to integration-cli Docker-DCO-1.1-Signed-off-by: Alexandr Morozov (github: LK4D4) Upstream-commit: 1e0e86360f8fefbeb3d70642aa0402bcb0c97a1a Component: engine --- .../integration-cli/docker_cli_build_test.go | 17 +++++++++++++++++ components/engine/integration/buildfile_test.go | 14 -------------- 2 files changed, 17 insertions(+), 14 deletions(-) diff --git a/components/engine/integration-cli/docker_cli_build_test.go b/components/engine/integration-cli/docker_cli_build_test.go index 48ac7e5861..6d4d2b096c 100644 --- a/components/engine/integration-cli/docker_cli_build_test.go +++ b/components/engine/integration-cli/docker_cli_build_test.go @@ -1307,3 +1307,20 @@ func TestBuildOnBuild(t *testing.T) { } logDone("build - onbuild") } + +func TestBuildOnBuildForbiddenChained(t *testing.T) { + name := "testbuildonbuildforbiddenchained" + defer deleteImages(name) + _, err := buildImage(name, + `FROM busybox + ONBUILD ONBUILD RUN touch foobar`, + true) + if err != nil { + if !strings.Contains(err.Error(), "Chaining ONBUILD via `ONBUILD ONBUILD` isn't allowed") { + t.Fatalf("Wrong error %v, must be about chaining ONBUILD", err) + } + } else { + t.Fatal("Error must not be nil") + } + logDone("build - onbuild forbidden chained") +} diff --git a/components/engine/integration/buildfile_test.go b/components/engine/integration/buildfile_test.go index 7b8fd7b178..dd240d4cb3 100644 --- a/components/engine/integration/buildfile_test.go +++ b/components/engine/integration/buildfile_test.go @@ -413,20 +413,6 @@ func buildImage(context testContextTemplate, t *testing.T, eng *engine.Engine, u return image, err } -func TestBuildOnBuildForbiddenChainedTrigger(t *testing.T) { - _, err := buildImage(testContextTemplate{` - from {IMAGE} - onbuild onbuild run echo test - `, - nil, nil, - }, - t, nil, true, - ) - if err == nil { - t.Fatal("Error should not be nil") - } -} - func TestBuildOnBuildForbiddenFromTrigger(t *testing.T) { _, err := buildImage(testContextTemplate{` from {IMAGE} From 3ac290e972592712e223b25d7982249e7ac2577f Mon Sep 17 00:00:00 2001 From: Alexandr Morozov Date: Tue, 17 Jun 2014 11:36:45 +0400 Subject: [PATCH 09/11] Move TestBuildOnBuildForbiddenFromTrigger to integration-cli Docker-DCO-1.1-Signed-off-by: Alexandr Morozov (github: LK4D4) Upstream-commit: 1c8ec01c551b3cfac8548d7fd22a50b3c236e362 Component: engine --- .../integration-cli/docker_cli_build_test.go | 17 +++++++++++++++++ components/engine/integration/buildfile_test.go | 14 -------------- 2 files changed, 17 insertions(+), 14 deletions(-) diff --git a/components/engine/integration-cli/docker_cli_build_test.go b/components/engine/integration-cli/docker_cli_build_test.go index 6d4d2b096c..f83c3fc8ca 100644 --- a/components/engine/integration-cli/docker_cli_build_test.go +++ b/components/engine/integration-cli/docker_cli_build_test.go @@ -1324,3 +1324,20 @@ func TestBuildOnBuildForbiddenChained(t *testing.T) { } logDone("build - onbuild forbidden chained") } + +func TestBuildOnBuildForbiddenFrom(t *testing.T) { + name := "testbuildonbuildforbiddenfrom" + defer deleteImages(name) + _, err := buildImage(name, + `FROM busybox + ONBUILD FROM scratch`, + true) + if err != nil { + if !strings.Contains(err.Error(), "FROM isn't allowed as an ONBUILD trigger") { + t.Fatalf("Wrong error %v, must be about FROM forbidden", err) + } + } else { + t.Fatal("Error must not be nil") + } + logDone("build - onbuild forbidden from") +} diff --git a/components/engine/integration/buildfile_test.go b/components/engine/integration/buildfile_test.go index dd240d4cb3..ce1e7224e3 100644 --- a/components/engine/integration/buildfile_test.go +++ b/components/engine/integration/buildfile_test.go @@ -413,20 +413,6 @@ func buildImage(context testContextTemplate, t *testing.T, eng *engine.Engine, u return image, err } -func TestBuildOnBuildForbiddenFromTrigger(t *testing.T) { - _, err := buildImage(testContextTemplate{` - from {IMAGE} - onbuild from {IMAGE} - `, - nil, nil, - }, - t, nil, true, - ) - if err == nil { - t.Fatal("Error should not be nil") - } -} - func TestBuildOnBuildForbiddenMaintainerTrigger(t *testing.T) { _, err := buildImage(testContextTemplate{` from {IMAGE} From f48cbf9c536985ea007776f2c7a67c11a3163b17 Mon Sep 17 00:00:00 2001 From: Alexandr Morozov Date: Tue, 17 Jun 2014 11:39:47 +0400 Subject: [PATCH 10/11] Move TestBuildOnBuildForbiddenMaintainerTrigger to integration-cli Docker-DCO-1.1-Signed-off-by: Alexandr Morozov (github: LK4D4) Upstream-commit: 690711b5840be388fb13fb72856de337bdf645c7 Component: engine --- .../integration-cli/docker_cli_build_test.go | 17 +++++++++++++++++ components/engine/integration/buildfile_test.go | 14 -------------- 2 files changed, 17 insertions(+), 14 deletions(-) diff --git a/components/engine/integration-cli/docker_cli_build_test.go b/components/engine/integration-cli/docker_cli_build_test.go index f83c3fc8ca..95f73f7e6c 100644 --- a/components/engine/integration-cli/docker_cli_build_test.go +++ b/components/engine/integration-cli/docker_cli_build_test.go @@ -1341,3 +1341,20 @@ func TestBuildOnBuildForbiddenFrom(t *testing.T) { } logDone("build - onbuild forbidden from") } + +func TestBuildOnBuildForbiddenMaintainer(t *testing.T) { + name := "testbuildonbuildforbiddenmaintainer" + defer deleteImages(name) + _, err := buildImage(name, + `FROM busybox + ONBUILD MAINTAINER docker.io`, + true) + if err != nil { + if !strings.Contains(err.Error(), "MAINTAINER isn't allowed as an ONBUILD trigger") { + t.Fatalf("Wrong error %v, must be about MAINTAINER forbidden", err) + } + } else { + t.Fatal("Error must not be nil") + } + logDone("build - onbuild forbidden maintainer") +} diff --git a/components/engine/integration/buildfile_test.go b/components/engine/integration/buildfile_test.go index ce1e7224e3..c5c1fb0363 100644 --- a/components/engine/integration/buildfile_test.go +++ b/components/engine/integration/buildfile_test.go @@ -413,20 +413,6 @@ func buildImage(context testContextTemplate, t *testing.T, eng *engine.Engine, u return image, err } -func TestBuildOnBuildForbiddenMaintainerTrigger(t *testing.T) { - _, err := buildImage(testContextTemplate{` - from {IMAGE} - onbuild maintainer test - `, - nil, nil, - }, - t, nil, true, - ) - if err == nil { - t.Fatal("Error should not be nil") - } -} - // gh #2446 func TestBuildAddToSymlinkDest(t *testing.T) { eng := NewTestEngine(t) From 017a78b3c15be574ef2ea2b41adbb10d2d1c8b70 Mon Sep 17 00:00:00 2001 From: Alexandr Morozov Date: Tue, 17 Jun 2014 11:49:07 +0400 Subject: [PATCH 11/11] Move TestBuildAddToSymlinkDest to integration-cli Docker-DCO-1.1-Signed-off-by: Alexandr Morozov (github: LK4D4) Upstream-commit: cc42eeac21caa962bed94878fe2eab00735cd00d Component: engine --- .../integration-cli/docker_cli_build_test.go | 23 +++++++++++++++++++ .../engine/integration/buildfile_test.go | 18 --------------- 2 files changed, 23 insertions(+), 18 deletions(-) diff --git a/components/engine/integration-cli/docker_cli_build_test.go b/components/engine/integration-cli/docker_cli_build_test.go index 95f73f7e6c..0837088322 100644 --- a/components/engine/integration-cli/docker_cli_build_test.go +++ b/components/engine/integration-cli/docker_cli_build_test.go @@ -1358,3 +1358,26 @@ func TestBuildOnBuildForbiddenMaintainer(t *testing.T) { } logDone("build - onbuild forbidden maintainer") } + +// gh #2446 +func TestBuildAddToSymlinkDest(t *testing.T) { + name := "testbuildaddtosymlinkdest" + defer deleteImages(name) + ctx, err := fakeContext(`FROM busybox + RUN mkdir /foo + RUN ln -s /foo /bar + ADD foo /bar/ + RUN [ -f /bar/foo ] + RUN [ -f /foo/foo ]`, + map[string]string{ + "foo": "hello", + }) + if err != nil { + t.Fatal(err) + } + defer ctx.Close() + if _, err := buildImageFromContext(name, ctx, true); err != nil { + t.Fatal(err) + } + logDone("build - add to symlink destination") +} diff --git a/components/engine/integration/buildfile_test.go b/components/engine/integration/buildfile_test.go index c5c1fb0363..147ae353a2 100644 --- a/components/engine/integration/buildfile_test.go +++ b/components/engine/integration/buildfile_test.go @@ -412,21 +412,3 @@ func buildImage(context testContextTemplate, t *testing.T, eng *engine.Engine, u err = json.NewDecoder(buffer).Decode(image) return image, err } - -// gh #2446 -func TestBuildAddToSymlinkDest(t *testing.T) { - eng := NewTestEngine(t) - defer nuke(mkDaemonFromEngine(eng, t)) - - _, err := buildImage(testContextTemplate{` - from {IMAGE} - run mkdir /foo - run ln -s /foo /bar - add foo /bar/ - run stat /bar/foo - `, - [][2]string{{"foo", "HEYO"}}, nil}, t, eng, true) - if err != nil { - t.Fatal(err) - } -}