github.com/docker/docker-ce@v17.12.1-ce-rc2+incompatible/components/cli/e2e/container/run_test.go (about) 1 package container 2 3 import ( 4 "fmt" 5 "testing" 6 7 "github.com/docker/cli/e2e/internal/fixtures" 8 shlex "github.com/flynn-archive/go-shlex" 9 "github.com/gotestyourself/gotestyourself/golden" 10 "github.com/gotestyourself/gotestyourself/icmd" 11 "github.com/stretchr/testify/assert" 12 "github.com/stretchr/testify/require" 13 ) 14 15 func TestRunAttachedFromRemoteImageAndRemove(t *testing.T) { 16 image := createRemoteImage(t) 17 18 result := icmd.RunCmd(shell(t, 19 "docker run --rm %s echo this is output", image)) 20 21 result.Assert(t, icmd.Success) 22 assert.Equal(t, "this is output\n", result.Stdout()) 23 golden.Assert(t, result.Stderr(), "run-attached-from-remote-and-remove.golden") 24 } 25 26 // TODO: create this with registry API instead of engine API 27 func createRemoteImage(t *testing.T) string { 28 image := "registry:5000/alpine:test-run-pulls" 29 icmd.RunCommand("docker", "pull", fixtures.AlpineImage).Assert(t, icmd.Success) 30 icmd.RunCommand("docker", "tag", fixtures.AlpineImage, image).Assert(t, icmd.Success) 31 icmd.RunCommand("docker", "push", image).Assert(t, icmd.Success) 32 icmd.RunCommand("docker", "rmi", image).Assert(t, icmd.Success) 33 return image 34 } 35 36 // TODO: move to gotestyourself 37 func shell(t *testing.T, format string, args ...interface{}) icmd.Cmd { 38 cmd, err := shlex.Split(fmt.Sprintf(format, args...)) 39 require.NoError(t, err) 40 return icmd.Cmd{Command: cmd} 41 }