github.com/xeptore/docker-cli@v20.10.14+incompatible/cli/command/image/list_test.go (about) 1 package image 2 3 import ( 4 "fmt" 5 "io/ioutil" 6 "testing" 7 8 "github.com/docker/cli/cli/config/configfile" 9 "github.com/docker/cli/internal/test" 10 "github.com/docker/docker/api/types" 11 "github.com/pkg/errors" 12 "gotest.tools/v3/assert" 13 is "gotest.tools/v3/assert/cmp" 14 "gotest.tools/v3/golden" 15 ) 16 17 func TestNewImagesCommandErrors(t *testing.T) { 18 testCases := []struct { 19 name string 20 args []string 21 expectedError string 22 imageListFunc func(options types.ImageListOptions) ([]types.ImageSummary, error) 23 }{ 24 { 25 name: "wrong-args", 26 args: []string{"arg1", "arg2"}, 27 expectedError: "requires at most 1 argument.", 28 }, 29 { 30 name: "failed-list", 31 expectedError: "something went wrong", 32 imageListFunc: func(options types.ImageListOptions) ([]types.ImageSummary, error) { 33 return []types.ImageSummary{{}}, errors.Errorf("something went wrong") 34 }, 35 }, 36 } 37 for _, tc := range testCases { 38 cmd := NewImagesCommand(test.NewFakeCli(&fakeClient{imageListFunc: tc.imageListFunc})) 39 cmd.SetOut(ioutil.Discard) 40 cmd.SetArgs(tc.args) 41 assert.ErrorContains(t, cmd.Execute(), tc.expectedError) 42 } 43 } 44 45 func TestNewImagesCommandSuccess(t *testing.T) { 46 testCases := []struct { 47 name string 48 args []string 49 imageFormat string 50 imageListFunc func(options types.ImageListOptions) ([]types.ImageSummary, error) 51 }{ 52 { 53 name: "simple", 54 }, 55 { 56 name: "format", 57 imageFormat: "raw", 58 }, 59 { 60 name: "quiet-format", 61 args: []string{"-q"}, 62 imageFormat: "table", 63 }, 64 { 65 name: "match-name", 66 args: []string{"image"}, 67 imageListFunc: func(options types.ImageListOptions) ([]types.ImageSummary, error) { 68 assert.Check(t, is.Equal("image", options.Filters.Get("reference")[0])) 69 return []types.ImageSummary{{}}, nil 70 }, 71 }, 72 { 73 name: "filters", 74 args: []string{"--filter", "name=value"}, 75 imageListFunc: func(options types.ImageListOptions) ([]types.ImageSummary, error) { 76 assert.Check(t, is.Equal("value", options.Filters.Get("name")[0])) 77 return []types.ImageSummary{{}}, nil 78 }, 79 }, 80 } 81 for _, tc := range testCases { 82 cli := test.NewFakeCli(&fakeClient{imageListFunc: tc.imageListFunc}) 83 cli.SetConfigFile(&configfile.ConfigFile{ImagesFormat: tc.imageFormat}) 84 cmd := NewImagesCommand(cli) 85 cmd.SetOut(ioutil.Discard) 86 cmd.SetArgs(tc.args) 87 err := cmd.Execute() 88 assert.NilError(t, err) 89 golden.Assert(t, cli.OutBuffer().String(), fmt.Sprintf("list-command-success.%s.golden", tc.name)) 90 } 91 } 92 93 func TestNewListCommandAlias(t *testing.T) { 94 cmd := newListCommand(test.NewFakeCli(&fakeClient{})) 95 assert.Check(t, cmd.HasAlias("list")) 96 assert.Check(t, !cmd.HasAlias("other")) 97 }