123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778 |
- package build // import "github.com/docker/docker/integration-cli/cli/build"
- import (
- "io"
- "strings"
- "testing"
- "github.com/docker/docker/testutil/fakecontext"
- "gotest.tools/v3/icmd"
- )
- // WithStdinContext sets the build context from the standard input with the specified reader
- func WithStdinContext(closer io.ReadCloser) func(*icmd.Cmd) func() {
- return func(cmd *icmd.Cmd) func() {
- cmd.Command = append(cmd.Command, "-")
- cmd.Stdin = closer
- return func() {
- // FIXME(vdemeester) we should not ignore the error here…
- closer.Close()
- }
- }
- }
- // WithDockerfile creates / returns a CmdOperator to set the Dockerfile for a build operation
- func WithDockerfile(dockerfile string) func(*icmd.Cmd) func() {
- return func(cmd *icmd.Cmd) func() {
- cmd.Command = append(cmd.Command, "-")
- cmd.Stdin = strings.NewReader(dockerfile)
- return nil
- }
- }
- // WithoutCache makes the build ignore cache
- func WithoutCache(cmd *icmd.Cmd) func() {
- cmd.Command = append(cmd.Command, "--no-cache")
- return nil
- }
- // WithContextPath sets the build context path
- func WithContextPath(path string) func(*icmd.Cmd) func() {
- return func(cmd *icmd.Cmd) func() {
- cmd.Command = append(cmd.Command, path)
- return nil
- }
- }
- // WithExternalBuildContext use the specified context as build context
- func WithExternalBuildContext(ctx *fakecontext.Fake) func(*icmd.Cmd) func() {
- return func(cmd *icmd.Cmd) func() {
- cmd.Dir = ctx.Dir
- cmd.Command = append(cmd.Command, ".")
- return nil
- }
- }
- // WithBuildContext sets up the build context
- func WithBuildContext(t testing.TB, contextOperators ...func(*fakecontext.Fake) error) func(*icmd.Cmd) func() {
- // FIXME(vdemeester) de-duplicate that
- ctx := fakecontext.New(t, "", contextOperators...)
- return func(cmd *icmd.Cmd) func() {
- cmd.Dir = ctx.Dir
- cmd.Command = append(cmd.Command, ".")
- return closeBuildContext(t, ctx)
- }
- }
- // WithFile adds the specified file (with content) in the build context
- func WithFile(name, content string) func(*fakecontext.Fake) error {
- return fakecontext.WithFile(name, content)
- }
- func closeBuildContext(t testing.TB, ctx *fakecontext.Fake) func() {
- return func() {
- if err := ctx.Close(); err != nil {
- t.Fatal(err)
- }
- }
- }
|