github.com/justincormack/cli@v0.0.0-20201215022714-831ebeae9675/cli/command/checkpoint/remove_test.go (about) 1 package checkpoint 2 3 import ( 4 "io/ioutil" 5 "testing" 6 7 "github.com/docker/cli/internal/test" 8 "github.com/docker/docker/api/types" 9 "github.com/pkg/errors" 10 "gotest.tools/v3/assert" 11 is "gotest.tools/v3/assert/cmp" 12 ) 13 14 func TestCheckpointRemoveErrors(t *testing.T) { 15 testCases := []struct { 16 args []string 17 checkpointDeleteFunc func(container string, options types.CheckpointDeleteOptions) error 18 expectedError string 19 }{ 20 { 21 args: []string{"too-few-arguments"}, 22 expectedError: "requires exactly 2 arguments", 23 }, 24 { 25 args: []string{"too", "many", "arguments"}, 26 expectedError: "requires exactly 2 arguments", 27 }, 28 { 29 args: []string{"foo", "bar"}, 30 checkpointDeleteFunc: func(container string, options types.CheckpointDeleteOptions) error { 31 return errors.Errorf("error deleting checkpoint") 32 }, 33 expectedError: "error deleting checkpoint", 34 }, 35 } 36 37 for _, tc := range testCases { 38 cli := test.NewFakeCli(&fakeClient{ 39 checkpointDeleteFunc: tc.checkpointDeleteFunc, 40 }) 41 cmd := newRemoveCommand(cli) 42 cmd.SetArgs(tc.args) 43 cmd.SetOut(ioutil.Discard) 44 assert.ErrorContains(t, cmd.Execute(), tc.expectedError) 45 } 46 } 47 48 func TestCheckpointRemoveWithOptions(t *testing.T) { 49 var containerID, checkpointID, checkpointDir string 50 cli := test.NewFakeCli(&fakeClient{ 51 checkpointDeleteFunc: func(container string, options types.CheckpointDeleteOptions) error { 52 containerID = container 53 checkpointID = options.CheckpointID 54 checkpointDir = options.CheckpointDir 55 return nil 56 }, 57 }) 58 cmd := newRemoveCommand(cli) 59 cmd.SetArgs([]string{"container-foo", "checkpoint-bar"}) 60 cmd.Flags().Set("checkpoint-dir", "/dir/foo") 61 assert.NilError(t, cmd.Execute()) 62 assert.Check(t, is.Equal("container-foo", containerID)) 63 assert.Check(t, is.Equal("checkpoint-bar", checkpointID)) 64 assert.Check(t, is.Equal("/dir/foo", checkpointDir)) 65 }