From 11f7f0bf9b510e09a853a9fd2030a95b72462164 Mon Sep 17 00:00:00 2001 From: LK4D4 Date: Thu, 22 May 2014 23:16:27 +0400 Subject: [PATCH 1/8] Move volume build test to integration-cli Docker-DCO-1.1-Signed-off-by: Alexandr Morozov (github: LK4D4) --- integration-cli/docker_cli_build_test.go | 33 ++++++++++++++++++++++++ integration/buildfile_test.go | 20 -------------- 2 files changed, 33 insertions(+), 20 deletions(-) diff --git a/integration-cli/docker_cli_build_test.go b/integration-cli/docker_cli_build_test.go index 4bbe4c6dc3..931a61b57d 100644 --- a/integration-cli/docker_cli_build_test.go +++ b/integration-cli/docker_cli_build_test.go @@ -10,6 +10,25 @@ import ( "time" ) +func checkSimpleBuild(t *testing.T, dockerfile, name, inspectFormat, expected string) { + buildCmd := exec.Command(dockerBinary, "build", "-t", name, "-") + buildCmd.Stdin = strings.NewReader(dockerfile) + out, exitCode, err := runCommandWithOutput(buildCmd) + errorOut(err, t, fmt.Sprintf("build failed to complete: %v %v", out, err)) + if err != nil || exitCode != 0 { + t.Fatal("failed to build the image") + } + inspectCmd := exec.Command(dockerBinary, "inspect", "-f", inspectFormat, name) + out, exitCode, err = runCommandWithOutput(inspectCmd) + if err != nil || exitCode != 0 { + t.Fatalf("failed to inspect the image: %s", out) + } + out = strings.TrimSpace(out) + if out != expected { + t.Fatalf("From format %s expected %s, got %s", inspectFormat, expected, out) + } +} + func TestBuildCacheADD(t *testing.T) { buildDirectory := filepath.Join(workingDirectory, "build_tests", "TestBuildCacheADD", "1") buildCmd := exec.Command(dockerBinary, "build", "-t", "testcacheadd1", ".") @@ -413,6 +432,20 @@ func TestBuildRm(t *testing.T) { logDone("build - ensure --rm=false overrides the default") } +func TestBuildWithVolume(t *testing.T) { + checkSimpleBuild(t, + ` + FROM scratch + VOLUME /test + `, + "testbuildimg", + "{{json .config.Volumes}}", + `{"/test":{}}`) + + deleteImages("testbuildimg") + logDone("build - with volume") +} + // TODO: TestCaching // TODO: TestADDCacheInvalidation diff --git a/integration/buildfile_test.go b/integration/buildfile_test.go index e113cdf512..c326e94cff 100644 --- a/integration/buildfile_test.go +++ b/integration/buildfile_test.go @@ -414,26 +414,6 @@ func buildImage(context testContextTemplate, t *testing.T, eng *engine.Engine, u return image, err } -func TestVolume(t *testing.T) { - img, err := buildImage(testContextTemplate{` - from {IMAGE} - volume /test - cmd Hello world - `, nil, nil}, t, nil, true) - if err != nil { - t.Fatal(err) - } - - if len(img.Config.Volumes) == 0 { - t.Fail() - } - for key := range img.Config.Volumes { - if key != "/test" { - t.Fail() - } - } -} - func TestBuildMaintainer(t *testing.T) { img, err := buildImage(testContextTemplate{` from {IMAGE} From 3dd4c5f49977bb9538ae1c39605895fde69c86ee Mon Sep 17 00:00:00 2001 From: LK4D4 Date: Sun, 25 May 2014 22:26:50 +0400 Subject: [PATCH 2/8] Move maintainer build test to integration-cli Docker-DCO-1.1-Signed-off-by: Alexandr Morozov (github: LK4D4) --- integration-cli/docker_cli_build_test.go | 14 ++++++++++++++ integration/buildfile_test.go | 14 -------------- 2 files changed, 14 insertions(+), 14 deletions(-) diff --git a/integration-cli/docker_cli_build_test.go b/integration-cli/docker_cli_build_test.go index 931a61b57d..696f95b8e0 100644 --- a/integration-cli/docker_cli_build_test.go +++ b/integration-cli/docker_cli_build_test.go @@ -446,6 +446,20 @@ func TestBuildWithVolume(t *testing.T) { logDone("build - with volume") } +func TestBuildMaintainer(t *testing.T) { + checkSimpleBuild(t, + ` + FROM scratch + MAINTAINER dockerio + `, + "testbuildimg", + "{{json .author}}", + `"dockerio"`) + + deleteImages("testbuildimg") + logDone("build - maintainer") +} + // TODO: TestCaching // TODO: TestADDCacheInvalidation diff --git a/integration/buildfile_test.go b/integration/buildfile_test.go index c326e94cff..89154e343e 100644 --- a/integration/buildfile_test.go +++ b/integration/buildfile_test.go @@ -414,20 +414,6 @@ func buildImage(context testContextTemplate, t *testing.T, eng *engine.Engine, u return image, err } -func TestBuildMaintainer(t *testing.T) { - img, err := buildImage(testContextTemplate{` - from {IMAGE} - maintainer dockerio - `, nil, nil}, t, nil, true) - if err != nil { - t.Fatal(err) - } - - if img.Author != "dockerio" { - t.Fail() - } -} - func TestBuildUser(t *testing.T) { img, err := buildImage(testContextTemplate{` from {IMAGE} From 360fb3d4ea192e28a4d2579589cd16954bb959c1 Mon Sep 17 00:00:00 2001 From: LK4D4 Date: Sun, 25 May 2014 22:28:14 +0400 Subject: [PATCH 3/8] Move user build test to integration-cli Docker-DCO-1.1-Signed-off-by: Alexandr Morozov (github: LK4D4) --- integration-cli/docker_cli_build_test.go | 16 ++++++++++++++++ integration/buildfile_test.go | 14 -------------- 2 files changed, 16 insertions(+), 14 deletions(-) diff --git a/integration-cli/docker_cli_build_test.go b/integration-cli/docker_cli_build_test.go index 696f95b8e0..af106a95e3 100644 --- a/integration-cli/docker_cli_build_test.go +++ b/integration-cli/docker_cli_build_test.go @@ -460,6 +460,22 @@ func TestBuildMaintainer(t *testing.T) { logDone("build - maintainer") } +func TestBuildUser(t *testing.T) { + checkSimpleBuild(t, + ` + FROM busybox + RUN echo 'dockerio:x:1001:1001::/bin:/bin/false' >> /etc/passwd + USER dockerio + RUN [ $(whoami) = 'dockerio' ] + `, + "testbuildimg", + "{{json .config.User}}", + `"dockerio"`) + + deleteImages("testbuildimg") + logDone("build - user") +} + // TODO: TestCaching // TODO: TestADDCacheInvalidation diff --git a/integration/buildfile_test.go b/integration/buildfile_test.go index 89154e343e..26a41c6514 100644 --- a/integration/buildfile_test.go +++ b/integration/buildfile_test.go @@ -414,20 +414,6 @@ func buildImage(context testContextTemplate, t *testing.T, eng *engine.Engine, u return image, err } -func TestBuildUser(t *testing.T) { - img, err := buildImage(testContextTemplate{` - from {IMAGE} - user dockerio - `, nil, nil}, t, nil, true) - if err != nil { - t.Fatal(err) - } - - if img.Config.User != "dockerio" { - t.Fail() - } -} - func TestBuildRelativeWorkdir(t *testing.T) { img, err := buildImage(testContextTemplate{` FROM {IMAGE} From 40630ce4b65755683e496bb7dbf3779b96ec5393 Mon Sep 17 00:00:00 2001 From: LK4D4 Date: Sun, 25 May 2014 22:41:47 +0400 Subject: [PATCH 4/8] Move relative workdir build test to integration-cli Docker-DCO-1.1-Signed-off-by: Alexandr Morozov (github: LK4D4) --- integration-cli/docker_cli_build_test.go | 20 ++++++++++++++++++++ integration/buildfile_test.go | 19 ------------------- 2 files changed, 20 insertions(+), 19 deletions(-) diff --git a/integration-cli/docker_cli_build_test.go b/integration-cli/docker_cli_build_test.go index af106a95e3..b2cea9e52b 100644 --- a/integration-cli/docker_cli_build_test.go +++ b/integration-cli/docker_cli_build_test.go @@ -476,6 +476,26 @@ func TestBuildUser(t *testing.T) { logDone("build - user") } +func TestBuildRelativeWorkdir(t *testing.T) { + checkSimpleBuild(t, + ` + FROM busybox + RUN [ "$PWD" = '/' ] + WORKDIR test1 + RUN [ "$PWD" = '/test1' ] + WORKDIR /test2 + RUN [ "$PWD" = '/test2' ] + WORKDIR test3 + RUN [ "$PWD" = '/test2/test3' ] + `, + "testbuildimg", + "{{json .config.WorkingDir}}", + `"/test2/test3"`) + + deleteImages("testbuildimg") + logDone("build - relative workdir") +} + // TODO: TestCaching // TODO: TestADDCacheInvalidation diff --git a/integration/buildfile_test.go b/integration/buildfile_test.go index 26a41c6514..2416e140b5 100644 --- a/integration/buildfile_test.go +++ b/integration/buildfile_test.go @@ -414,25 +414,6 @@ func buildImage(context testContextTemplate, t *testing.T, eng *engine.Engine, u return image, err } -func TestBuildRelativeWorkdir(t *testing.T) { - img, err := buildImage(testContextTemplate{` - FROM {IMAGE} - RUN [ "$PWD" = '/' ] - WORKDIR test1 - RUN [ "$PWD" = '/test1' ] - WORKDIR /test2 - RUN [ "$PWD" = '/test2' ] - WORKDIR test3 - RUN [ "$PWD" = '/test2/test3' ] - `, nil, nil}, t, nil, true) - if err != nil { - t.Fatal(err) - } - if img.Config.WorkingDir != "/test2/test3" { - t.Fatalf("Expected workdir to be '/test2/test3', received '%s'", img.Config.WorkingDir) - } -} - func TestBuildEnv(t *testing.T) { img, err := buildImage(testContextTemplate{` from {IMAGE} From b05be686ec490ba68de82434f1ecaff01a84fcfa Mon Sep 17 00:00:00 2001 From: LK4D4 Date: Mon, 26 May 2014 23:09:33 +0400 Subject: [PATCH 5/8] Move env build test to integration-cli Docker-DCO-1.1-Signed-off-by: Alexandr Morozov (github: LK4D4) --- integration-cli/docker_cli_build_test.go | 15 +++++++++++++++ integration/buildfile_test.go | 22 ---------------------- 2 files changed, 15 insertions(+), 22 deletions(-) diff --git a/integration-cli/docker_cli_build_test.go b/integration-cli/docker_cli_build_test.go index b2cea9e52b..e22b09476c 100644 --- a/integration-cli/docker_cli_build_test.go +++ b/integration-cli/docker_cli_build_test.go @@ -496,6 +496,21 @@ func TestBuildRelativeWorkdir(t *testing.T) { logDone("build - relative workdir") } +func TestBuildEnv(t *testing.T) { + checkSimpleBuild(t, + ` + FROM busybox + ENV PORT 4243 + RUN [ $(env | grep PORT) = 'PORT=4243' ] + `, + "testbuildimg", + "{{json .config.Env}}", + `["HOME=/","PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin","PORT=4243"]`) + + deleteImages("testbuildimg") + logDone("build - env") +} + // TODO: TestCaching // TODO: TestADDCacheInvalidation diff --git a/integration/buildfile_test.go b/integration/buildfile_test.go index 2416e140b5..28d5f3011c 100644 --- a/integration/buildfile_test.go +++ b/integration/buildfile_test.go @@ -414,28 +414,6 @@ func buildImage(context testContextTemplate, t *testing.T, eng *engine.Engine, u return image, err } -func TestBuildEnv(t *testing.T) { - img, err := buildImage(testContextTemplate{` - from {IMAGE} - env port 4243 - `, - nil, nil}, t, nil, true) - if err != nil { - t.Fatal(err) - } - - hasEnv := false - for _, envVar := range img.Config.Env { - if envVar == "port=4243" { - hasEnv = true - break - } - } - if !hasEnv { - t.Fail() - } -} - func TestBuildCmd(t *testing.T) { img, err := buildImage(testContextTemplate{` from {IMAGE} From c58991f31a6a2ceaee7a3a327bfbc697b059ff51 Mon Sep 17 00:00:00 2001 From: LK4D4 Date: Mon, 26 May 2014 23:15:40 +0400 Subject: [PATCH 6/8] Move cmd build test to integration-cli Docker-DCO-1.1-Signed-off-by: Alexandr Morozov (github: LK4D4) --- integration-cli/docker_cli_build_test.go | 14 ++++++++++++++ integration/buildfile_test.go | 20 -------------------- 2 files changed, 14 insertions(+), 20 deletions(-) diff --git a/integration-cli/docker_cli_build_test.go b/integration-cli/docker_cli_build_test.go index e22b09476c..ade7efe99f 100644 --- a/integration-cli/docker_cli_build_test.go +++ b/integration-cli/docker_cli_build_test.go @@ -511,6 +511,20 @@ func TestBuildEnv(t *testing.T) { logDone("build - env") } +func TestBuildCmd(t *testing.T) { + checkSimpleBuild(t, + ` + FROM scratch + CMD ["/bin/echo", "Hello World"] + `, + "testbuildimg", + "{{json .config.Cmd}}", + `["/bin/echo","Hello World"]`) + + deleteImages("testbuildimg") + logDone("build - cmd") +} + // TODO: TestCaching // TODO: TestADDCacheInvalidation diff --git a/integration/buildfile_test.go b/integration/buildfile_test.go index 28d5f3011c..5d508ff8f3 100644 --- a/integration/buildfile_test.go +++ b/integration/buildfile_test.go @@ -414,26 +414,6 @@ func buildImage(context testContextTemplate, t *testing.T, eng *engine.Engine, u return image, err } -func TestBuildCmd(t *testing.T) { - img, err := buildImage(testContextTemplate{` - from {IMAGE} - cmd ["/bin/echo", "Hello World"] - `, - nil, nil}, t, nil, true) - if err != nil { - t.Fatal(err) - } - - if img.Config.Cmd[0] != "/bin/echo" { - t.Log(img.Config.Cmd[0]) - t.Fail() - } - if img.Config.Cmd[1] != "Hello World" { - t.Log(img.Config.Cmd[1]) - t.Fail() - } -} - func TestBuildExpose(t *testing.T) { img, err := buildImage(testContextTemplate{` from {IMAGE} From 81d16411398c20a7ddc0bbe3e5e1ce0bd95d6519 Mon Sep 17 00:00:00 2001 From: LK4D4 Date: Mon, 26 May 2014 23:23:46 +0400 Subject: [PATCH 7/8] Move expose build test to integration-cli Docker-DCO-1.1-Signed-off-by: Alexandr Morozov (github: LK4D4) --- integration-cli/docker_cli_build_test.go | 15 +++++++++++++++ integration/buildfile_test.go | 15 --------------- 2 files changed, 15 insertions(+), 15 deletions(-) diff --git a/integration-cli/docker_cli_build_test.go b/integration-cli/docker_cli_build_test.go index ade7efe99f..4a2c5eda6d 100644 --- a/integration-cli/docker_cli_build_test.go +++ b/integration-cli/docker_cli_build_test.go @@ -525,6 +525,21 @@ func TestBuildCmd(t *testing.T) { logDone("build - cmd") } +func TestBuildExpose(t *testing.T) { + checkSimpleBuild(t, + ` + FROM scratch + EXPOSE 4243 + `, + + "testbuildimg", + "{{json .config.ExposedPorts}}", + `{"4243/tcp":{}}`) + + deleteImages("testbuildimg") + logDone("build - expose") +} + // TODO: TestCaching // TODO: TestADDCacheInvalidation diff --git a/integration/buildfile_test.go b/integration/buildfile_test.go index 5d508ff8f3..db56537ad5 100644 --- a/integration/buildfile_test.go +++ b/integration/buildfile_test.go @@ -414,21 +414,6 @@ func buildImage(context testContextTemplate, t *testing.T, eng *engine.Engine, u return image, err } -func TestBuildExpose(t *testing.T) { - img, err := buildImage(testContextTemplate{` - from {IMAGE} - expose 4243 - `, - nil, nil}, t, nil, true) - if err != nil { - t.Fatal(err) - } - - if _, exists := img.Config.ExposedPorts[nat.NewPort("tcp", "4243")]; !exists { - t.Fail() - } -} - func TestBuildEntrypoint(t *testing.T) { img, err := buildImage(testContextTemplate{` from {IMAGE} From b25a9b7138e44950bee646c1bcb691a3dd273ea1 Mon Sep 17 00:00:00 2001 From: Alexandr Morozov Date: Tue, 27 May 2014 08:36:00 +0400 Subject: [PATCH 8/8] Move entrypoint build test to integration-cli Docker-DCO-1.1-Signed-off-by: Alexandr Morozov (github: LK4D4) --- integration-cli/docker_cli_build_test.go | 14 ++++++++++++++ integration/buildfile_test.go | 16 ---------------- 2 files changed, 14 insertions(+), 16 deletions(-) diff --git a/integration-cli/docker_cli_build_test.go b/integration-cli/docker_cli_build_test.go index 4a2c5eda6d..d804ba7962 100644 --- a/integration-cli/docker_cli_build_test.go +++ b/integration-cli/docker_cli_build_test.go @@ -540,6 +540,20 @@ func TestBuildExpose(t *testing.T) { logDone("build - expose") } +func TestBuildEntrypoint(t *testing.T) { + checkSimpleBuild(t, + ` + FROM scratch + ENTRYPOINT ["/bin/echo"] + `, + "testbuildimg", + "{{json .config.Entrypoint}}", + `["/bin/echo"]`) + + deleteImages("testbuildimg") + logDone("build - entrypoint") +} + // TODO: TestCaching // TODO: TestADDCacheInvalidation diff --git a/integration/buildfile_test.go b/integration/buildfile_test.go index db56537ad5..c60bb64c7f 100644 --- a/integration/buildfile_test.go +++ b/integration/buildfile_test.go @@ -414,22 +414,6 @@ func buildImage(context testContextTemplate, t *testing.T, eng *engine.Engine, u return image, err } -func TestBuildEntrypoint(t *testing.T) { - img, err := buildImage(testContextTemplate{` - from {IMAGE} - entrypoint ["/bin/echo"] - `, - nil, nil}, t, nil, true) - if err != nil { - t.Fatal(err) - } - - if img.Config.Entrypoint[0] != "/bin/echo" { - t.Log(img.Config.Entrypoint[0]) - t.Fail() - } -} - // testing #1405 - config.Cmd does not get cleaned up if // utilizing cache func TestBuildEntrypointRunCleanup(t *testing.T) {