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  }