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 }