github.com/xeptore/docker-cli@v20.10.14+incompatible/cmd/docker/docker_test.go (about) 1 package main 2 3 import ( 4 "bytes" 5 "io" 6 "io/ioutil" 7 "os" 8 "testing" 9 10 "github.com/docker/cli/cli/command" 11 "github.com/docker/cli/cli/debug" 12 "github.com/sirupsen/logrus" 13 "gotest.tools/v3/assert" 14 is "gotest.tools/v3/assert/cmp" 15 ) 16 17 func TestClientDebugEnabled(t *testing.T) { 18 defer debug.Disable() 19 20 cli, err := command.NewDockerCli() 21 assert.NilError(t, err) 22 tcmd := newDockerCommand(cli) 23 tcmd.SetFlag("debug", "true") 24 cmd, _, err := tcmd.HandleGlobalFlags() 25 assert.NilError(t, err) 26 assert.NilError(t, tcmd.Initialize()) 27 err = cmd.PersistentPreRunE(cmd, []string{}) 28 assert.NilError(t, err) 29 assert.Check(t, is.Equal("1", os.Getenv("DEBUG"))) 30 assert.Check(t, is.Equal(logrus.DebugLevel, logrus.GetLevel())) 31 } 32 33 var discard = ioutil.NopCloser(bytes.NewBuffer(nil)) 34 35 func runCliCommand(t *testing.T, r io.ReadCloser, w io.Writer, args ...string) error { 36 t.Helper() 37 if r == nil { 38 r = discard 39 } 40 if w == nil { 41 w = ioutil.Discard 42 } 43 cli, err := command.NewDockerCli(command.WithInputStream(r), command.WithCombinedStreams(w)) 44 assert.NilError(t, err) 45 tcmd := newDockerCommand(cli) 46 tcmd.SetArgs(args) 47 cmd, _, err := tcmd.HandleGlobalFlags() 48 assert.NilError(t, err) 49 assert.NilError(t, tcmd.Initialize()) 50 return cmd.Execute() 51 } 52 53 func TestExitStatusForInvalidSubcommandWithHelpFlag(t *testing.T) { 54 err := runCliCommand(t, nil, nil, "help", "invalid") 55 assert.Error(t, err, "unknown help topic: invalid") 56 } 57 58 func TestExitStatusForInvalidSubcommand(t *testing.T) { 59 err := runCliCommand(t, nil, nil, "invalid") 60 assert.Check(t, is.ErrorContains(err, "docker: 'invalid' is not a docker command.")) 61 } 62 63 func TestVersion(t *testing.T) { 64 var b bytes.Buffer 65 err := runCliCommand(t, nil, &b, "--version") 66 assert.NilError(t, err) 67 assert.Check(t, is.Contains(b.String(), "Docker version")) 68 }