github.1git.de/docker/cli@v26.1.3+incompatible/cli/command/container/export_test.go (about)

     1  package container
     2  
     3  import (
     4  	"io"
     5  	"strings"
     6  	"testing"
     7  
     8  	"github.com/docker/cli/internal/test"
     9  	"gotest.tools/v3/assert"
    10  	"gotest.tools/v3/fs"
    11  )
    12  
    13  func TestContainerExportOutputToFile(t *testing.T) {
    14  	dir := fs.NewDir(t, "export-test")
    15  	defer dir.Remove()
    16  
    17  	cli := test.NewFakeCli(&fakeClient{
    18  		containerExportFunc: func(container string) (io.ReadCloser, error) {
    19  			return io.NopCloser(strings.NewReader("bar")), nil
    20  		},
    21  	})
    22  	cmd := NewExportCommand(cli)
    23  	cmd.SetOut(io.Discard)
    24  	cmd.SetArgs([]string{"-o", dir.Join("foo"), "container"})
    25  	assert.NilError(t, cmd.Execute())
    26  
    27  	expected := fs.Expected(t,
    28  		fs.WithFile("foo", "bar", fs.MatchAnyFileMode),
    29  	)
    30  
    31  	assert.Assert(t, fs.Equal(dir.Path(), expected))
    32  }
    33  
    34  func TestContainerExportOutputToIrregularFile(t *testing.T) {
    35  	cli := test.NewFakeCli(&fakeClient{
    36  		containerExportFunc: func(container string) (io.ReadCloser, error) {
    37  			return io.NopCloser(strings.NewReader("foo")), nil
    38  		},
    39  	})
    40  	cmd := NewExportCommand(cli)
    41  	cmd.SetOut(io.Discard)
    42  	cmd.SetArgs([]string{"-o", "/dev/random", "container"})
    43  
    44  	err := cmd.Execute()
    45  	assert.Assert(t, err != nil)
    46  	expected := `"/dev/random" must be a directory or a regular file`
    47  	assert.ErrorContains(t, err, expected)
    48  }