github.com/thajeztah/cli@v0.0.0-20240223162942-dc6bfac81a8b/cmd/docker/docker_test.go (about) 1 package main 2 3 import ( 4 "bytes" 5 "io" 6 "os" 7 "testing" 8 9 "github.com/docker/cli/cli/command" 10 "github.com/docker/cli/cli/debug" 11 "github.com/sirupsen/logrus" 12 "gotest.tools/v3/assert" 13 is "gotest.tools/v3/assert/cmp" 14 ) 15 16 func TestClientDebugEnabled(t *testing.T) { 17 defer debug.Disable() 18 19 cli, err := command.NewDockerCli() 20 assert.NilError(t, err) 21 tcmd := newDockerCommand(cli) 22 tcmd.SetFlag("debug", "true") 23 cmd, _, err := tcmd.HandleGlobalFlags() 24 assert.NilError(t, err) 25 assert.NilError(t, tcmd.Initialize()) 26 err = cmd.PersistentPreRunE(cmd, []string{}) 27 assert.NilError(t, err) 28 assert.Check(t, is.Equal("1", os.Getenv("DEBUG"))) 29 assert.Check(t, is.Equal(logrus.DebugLevel, logrus.GetLevel())) 30 } 31 32 var discard = io.NopCloser(bytes.NewBuffer(nil)) 33 34 func runCliCommand(t *testing.T, r io.ReadCloser, w io.Writer, args ...string) error { 35 t.Helper() 36 if r == nil { 37 r = discard 38 } 39 if w == nil { 40 w = io.Discard 41 } 42 cli, err := command.NewDockerCli(command.WithInputStream(r), command.WithCombinedStreams(w)) 43 assert.NilError(t, err) 44 tcmd := newDockerCommand(cli) 45 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 }