github.com/cspotcode/docker-cli@v20.10.0-rc1.0.20201201121459-3faad7acc5b8+incompatible/cli/command/container/rm_test.go (about)

     1  package container
     2  
     3  import (
     4  	"context"
     5  	"fmt"
     6  	"io/ioutil"
     7  	"sort"
     8  	"testing"
     9  
    10  	"github.com/docker/cli/internal/test"
    11  	"github.com/docker/docker/api/types"
    12  	"github.com/docker/docker/errdefs"
    13  	"gotest.tools/v3/assert"
    14  )
    15  
    16  func TestRemoveForce(t *testing.T) {
    17  	var removed []string
    18  
    19  	cli := test.NewFakeCli(&fakeClient{
    20  		containerRemoveFunc: func(ctx context.Context, container string, options types.ContainerRemoveOptions) error {
    21  			removed = append(removed, container)
    22  			if container == "nosuchcontainer" {
    23  				return errdefs.NotFound(fmt.Errorf("Error: No such container: " + container))
    24  			}
    25  			return nil
    26  		},
    27  		Version: "1.36",
    28  	})
    29  	cmd := NewRmCommand(cli)
    30  	cmd.SetOut(ioutil.Discard)
    31  
    32  	t.Run("without force", func(t *testing.T) {
    33  		cmd.SetArgs([]string{"nosuchcontainer", "mycontainer"})
    34  		removed = []string{}
    35  		assert.ErrorContains(t, cmd.Execute(), "No such container")
    36  		sort.Strings(removed)
    37  		assert.DeepEqual(t, removed, []string{"mycontainer", "nosuchcontainer"})
    38  	})
    39  	t.Run("with force", func(t *testing.T) {
    40  		cmd.SetArgs([]string{"--force", "nosuchcontainer", "mycontainer"})
    41  		removed = []string{}
    42  		assert.NilError(t, cmd.Execute())
    43  		sort.Strings(removed)
    44  		assert.DeepEqual(t, removed, []string{"mycontainer", "nosuchcontainer"})
    45  	})
    46  }