github.1git.de/docker/cli@v26.1.3+incompatible/cli/command/system/prune_test.go (about) 1 package system 2 3 import ( 4 "context" 5 "testing" 6 7 "github.com/docker/cli/cli/config/configfile" 8 "github.com/docker/cli/internal/test" 9 "github.com/docker/docker/api/types" 10 "github.com/docker/docker/api/types/filters" 11 "github.com/pkg/errors" 12 "gotest.tools/v3/assert" 13 is "gotest.tools/v3/assert/cmp" 14 ) 15 16 func TestPrunePromptPre131DoesNotIncludeBuildCache(t *testing.T) { 17 cli := test.NewFakeCli(&fakeClient{version: "1.30"}) 18 cmd := newPruneCommand(cli) 19 cmd.SetArgs([]string{}) 20 assert.ErrorContains(t, cmd.Execute(), "system prune has been cancelled") 21 expected := `WARNING! This will remove: 22 - all stopped containers 23 - all networks not used by at least one container 24 - all dangling images 25 26 Are you sure you want to continue? [y/N] ` 27 assert.Check(t, is.Equal(expected, cli.OutBuffer().String())) 28 } 29 30 func TestPrunePromptFilters(t *testing.T) { 31 cli := test.NewFakeCli(&fakeClient{version: "1.31"}) 32 cli.SetConfigFile(&configfile.ConfigFile{ 33 PruneFilters: []string{"label!=never=remove-me", "label=remove=me"}, 34 }) 35 cmd := newPruneCommand(cli) 36 cmd.SetArgs([]string{"--filter", "until=24h", "--filter", "label=hello-world", "--filter", "label!=foo=bar", "--filter", "label=bar=baz"}) 37 38 assert.ErrorContains(t, cmd.Execute(), "system prune has been cancelled") 39 expected := `WARNING! This will remove: 40 - all stopped containers 41 - all networks not used by at least one container 42 - all dangling images 43 - unused build cache 44 45 Items to be pruned will be filtered with: 46 - label!=foo=bar 47 - label!=never=remove-me 48 - label=bar=baz 49 - label=hello-world 50 - label=remove=me 51 - until=24h 52 53 Are you sure you want to continue? [y/N] ` 54 assert.Check(t, is.Equal(expected, cli.OutBuffer().String())) 55 } 56 57 func TestSystemPrunePromptTermination(t *testing.T) { 58 ctx, cancel := context.WithCancel(context.Background()) 59 t.Cleanup(cancel) 60 61 cli := test.NewFakeCli(&fakeClient{ 62 containerPruneFunc: func(ctx context.Context, pruneFilters filters.Args) (types.ContainersPruneReport, error) { 63 return types.ContainersPruneReport{}, errors.New("fakeClient containerPruneFunc should not be called") 64 }, 65 networkPruneFunc: func(ctx context.Context, pruneFilters filters.Args) (types.NetworksPruneReport, error) { 66 return types.NetworksPruneReport{}, errors.New("fakeClient networkPruneFunc should not be called") 67 }, 68 }) 69 70 cmd := newPruneCommand(cli) 71 test.TerminatePrompt(ctx, t, cmd, cli) 72 }