mirror of https://github.com/docker/cli.git
Uniform volume prune output msg with other prune commands
- Return error when user refuses at confirmation prompt - Avoid sending space freed msg if user cancelled - Fixed unit tests Signed-off-by: Christopher Petito <chrisjpetito@gmail.com>
This commit is contained in:
parent
ce3b07c0db
commit
69e0f53a03
|
@ -32,6 +32,10 @@ func NewPruneCommand(dockerCli command.Cli) *cobra.Command {
|
||||||
RunE: func(cmd *cobra.Command, args []string) error {
|
RunE: func(cmd *cobra.Command, args []string) error {
|
||||||
spaceReclaimed, output, err := runPrune(cmd.Context(), dockerCli, options)
|
spaceReclaimed, output, err := runPrune(cmd.Context(), dockerCli, options)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
|
if errdefs.IsCancelled(err) {
|
||||||
|
fmt.Fprintln(dockerCli.Out(), output)
|
||||||
|
return nil
|
||||||
|
}
|
||||||
return err
|
return err
|
||||||
}
|
}
|
||||||
if output != "" {
|
if output != "" {
|
||||||
|
@ -77,7 +81,7 @@ func runPrune(ctx context.Context, dockerCli command.Cli, options pruneOptions)
|
||||||
warning = allVolumesWarning
|
warning = allVolumesWarning
|
||||||
}
|
}
|
||||||
if !options.force && !command.PromptForConfirmation(dockerCli.In(), dockerCli.Out(), warning) {
|
if !options.force && !command.PromptForConfirmation(dockerCli.In(), dockerCli.Out(), warning) {
|
||||||
return 0, "", nil
|
return 0, "", errdefs.Cancelled(errors.New("user cancelled operation"))
|
||||||
}
|
}
|
||||||
|
|
||||||
report, err := dockerCli.Client().VolumesPrune(ctx, pruneFilters)
|
report, err := dockerCli.Client().VolumesPrune(ctx, pruneFilters)
|
||||||
|
|
|
@ -73,13 +73,15 @@ func TestVolumePruneSuccess(t *testing.T) {
|
||||||
testCases := []struct {
|
testCases := []struct {
|
||||||
name string
|
name string
|
||||||
args []string
|
args []string
|
||||||
|
input string
|
||||||
volumePruneFunc func(args filters.Args) (types.VolumesPruneReport, error)
|
volumePruneFunc func(args filters.Args) (types.VolumesPruneReport, error)
|
||||||
}{
|
}{
|
||||||
{
|
{
|
||||||
name: "all",
|
name: "all",
|
||||||
args: []string{"--all"},
|
args: []string{"--all"},
|
||||||
|
input: "y",
|
||||||
volumePruneFunc: func(pruneFilter filters.Args) (types.VolumesPruneReport, error) {
|
volumePruneFunc: func(pruneFilter filters.Args) (types.VolumesPruneReport, error) {
|
||||||
assert.Check(t, is.Equal([]string{"true"}, pruneFilter.Get("all")))
|
assert.Check(t, is.DeepEqual([]string{"true"}, pruneFilter.Get("all")))
|
||||||
return types.VolumesPruneReport{}, nil
|
return types.VolumesPruneReport{}, nil
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
|
@ -91,10 +93,11 @@ func TestVolumePruneSuccess(t *testing.T) {
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
name: "label-filter",
|
name: "label-filter",
|
||||||
args: []string{"--filter", "label=foobar"},
|
args: []string{"--filter", "label=foobar"},
|
||||||
|
input: "y",
|
||||||
volumePruneFunc: func(pruneFilter filters.Args) (types.VolumesPruneReport, error) {
|
volumePruneFunc: func(pruneFilter filters.Args) (types.VolumesPruneReport, error) {
|
||||||
assert.Check(t, is.Equal([]string{"foobar"}, pruneFilter.Get("label")))
|
assert.Check(t, is.DeepEqual([]string{"foobar"}, pruneFilter.Get("label")))
|
||||||
return types.VolumesPruneReport{}, nil
|
return types.VolumesPruneReport{}, nil
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
|
@ -104,6 +107,9 @@ func TestVolumePruneSuccess(t *testing.T) {
|
||||||
t.Run(tc.name, func(t *testing.T) {
|
t.Run(tc.name, func(t *testing.T) {
|
||||||
cli := test.NewFakeCli(&fakeClient{volumePruneFunc: tc.volumePruneFunc})
|
cli := test.NewFakeCli(&fakeClient{volumePruneFunc: tc.volumePruneFunc})
|
||||||
cmd := NewPruneCommand(cli)
|
cmd := NewPruneCommand(cli)
|
||||||
|
if tc.input != "" {
|
||||||
|
cli.SetIn(streams.NewIn(io.NopCloser(strings.NewReader(tc.input))))
|
||||||
|
}
|
||||||
cmd.SetOut(io.Discard)
|
cmd.SetOut(io.Discard)
|
||||||
cmd.SetArgs(tc.args)
|
cmd.SetArgs(tc.args)
|
||||||
err := cmd.Execute()
|
err := cmd.Execute()
|
||||||
|
|
|
@ -1,2 +1,2 @@
|
||||||
WARNING! This will remove anonymous local volumes not used by at least one container.
|
WARNING! This will remove anonymous local volumes not used by at least one container.
|
||||||
Are you sure you want to continue? [y/N] Total reclaimed space: 0B
|
Are you sure you want to continue? [y/N]
|
||||||
|
|
Loading…
Reference in New Issue