Merge pull request #4854 from krissetto/uniform-volume-prune-output

Uniform output of volume prune cmd with other prune cmds
This commit is contained in:
Sebastiaan van Stijn 2024-02-06 19:45:51 +01:00 committed by GitHub
commit 57d72237d7
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
3 changed files with 18 additions and 8 deletions

View File

@ -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)

View File

@ -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()

View File

@ -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]