From 80a367c7cc185513038debe8407bbaacac936ffb Mon Sep 17 00:00:00 2001 From: Katsunori Kanda Date: Thu, 3 Dec 2020 10:08:27 +0900 Subject: [PATCH] feat: add BuuildArgs to BuildOptions (#242) --- dockertest.go | 2 ++ dockertest_test.go | 41 +++++++++++++++++++++++++++++++++++++++++ 2 files changed, 43 insertions(+) diff --git a/dockertest.go b/dockertest.go index 66636bc7..2a515220 100644 --- a/dockertest.go +++ b/dockertest.go @@ -306,6 +306,7 @@ type RunOptions struct { type BuildOptions struct { Dockerfile string ContextDir string + BuildArgs []dc.BuildArg } // BuildAndRunWithBuildOptions builds and starts a docker container. @@ -316,6 +317,7 @@ func (d *Pool) BuildAndRunWithBuildOptions(buildOpts *BuildOptions, runOpts *Run Dockerfile: buildOpts.Dockerfile, OutputStream: ioutil.Discard, ContextDir: buildOpts.ContextDir, + BuildArgs: buildOpts.BuildArgs, }) if err != nil { diff --git a/dockertest_test.go b/dockertest_test.go index b947391e..b36a6fac 100644 --- a/dockertest_test.go +++ b/dockertest_test.go @@ -141,6 +141,47 @@ func TestBuildImage(t *testing.T) { require.Nil(t, pool.Purge(resource)) } +func TestBuildImageWithBuildArg(t *testing.T) { + // Create Dockerfile in temp dir + dir, _ := ioutil.TempDir("", "dockertest") + defer os.RemoveAll(dir) + + dockerfilePath := dir + "/Dockerfile" + ioutil.WriteFile(dockerfilePath, + []byte((`FROM busybox +ARG foo +RUN echo -n $foo > /build-time-value +CMD sleep 10 +`)), + 0644, + ) + + resource, err := pool.BuildAndRunWithBuildOptions( + &BuildOptions{ + ContextDir: dir, + Dockerfile: "Dockerfile", + BuildArgs: []dc.BuildArg{ + {Name: "foo", Value: "bar"}, + }, + }, + &RunOptions{ + Name: "buildarg-test", + }, func(hc *dc.HostConfig) { + hc.AutoRemove = true + }) + require.Nil(t, err) + + var stdout bytes.Buffer + exitCode, err := resource.Exec( + []string{"cat", "/build-time-value"}, + ExecOptions{StdOut: &stdout}, + ) + require.Nil(t, err) + require.Zero(t, exitCode) + require.Equal(t, stdout.String(), "bar") + require.Nil(t, pool.Purge(resource)) +} + func TestExpire(t *testing.T) { resource, err := pool.Run("postgres", "9.5", nil) require.Nil(t, err)