github.com/tilt-dev/tilt@v0.33.15-0.20240515162809-0a22ed45d8a0/internal/docker/client_integration_test.go (about) 1 //go:build !skipcontainertests 2 // +build !skipcontainertests 3 4 package docker 5 6 import ( 7 "bytes" 8 "testing" 9 10 "github.com/distribution/reference" 11 "github.com/stretchr/testify/require" 12 13 "github.com/tilt-dev/clusterid" 14 wmcontainer "github.com/tilt-dev/tilt/internal/container" 15 "github.com/tilt-dev/tilt/internal/k8s" 16 "github.com/tilt-dev/tilt/internal/testutils" 17 ) 18 19 func TestCli_Run(t *testing.T) { 20 ctx, _, _ := testutils.CtxAndAnalyticsForTest() 21 k8sClient := k8s.NewFakeK8sClient(t) 22 k8sClient.Runtime = wmcontainer.RuntimeDocker 23 24 dEnv := ProvideClusterEnv(ctx, RealClientCreator{}, "gke", clusterid.ProductGKE, k8sClient, k8s.FakeMinikube{}) 25 cli := NewDockerClient(ctx, Env(dEnv)) 26 defer func() { 27 // release any idle connections to avoid out of file errors if running test many times 28 _ = cli.(*Cli).Close() 29 }() 30 31 ref, err := reference.ParseNamed("docker.io/library/hello-world") 32 require.NoError(t, err) 33 34 var stdout bytes.Buffer 35 r, err := cli.Run(ctx, RunConfig{ 36 Pull: true, 37 Image: ref, 38 Stdout: &stdout, 39 }) 40 require.NoError(t, err, "Error during run") 41 exitCode, err := r.Wait() 42 require.NoError(t, err, "Error waiting for exit") 43 require.NoError(t, r.Close(), "Error cleaning up container") 44 require.Equal(t, int64(0), exitCode, "Non-zero exit code from container") 45 require.Contains(t, stdout.String(), "Hello from Docker", "Bad stdout") 46 }