| 380 | } |
| 381 | |
| 382 | func TestCopyFromContainerReportsDirectorySize(t *testing.T) { |
| 383 | // When copying a directory from a container, cpRes.Stat.Mode.IsDir() is true, |
| 384 | // so reportedSize falls back to copiedSize (the tar stream bytes). |
| 385 | srcDir := fs.NewDir(t, "cp-test-fromdir", |
| 386 | fs.WithFile("file1", "hello")) |
| 387 | |
| 388 | destDir := fs.NewDir(t, "cp-test-fromdir-dest") |
| 389 | |
| 390 | fakeCli := test.NewFakeCli(&fakeClient{ |
| 391 | containerCopyFromFunc: func(ctr, srcPath string) (client.CopyFromContainerResult, error) { |
| 392 | readCloser, err := archive.Tar(srcDir.Path(), compression.None) |
| 393 | return client.CopyFromContainerResult{ |
| 394 | Content: readCloser, |
| 395 | Stat: container.PathStat{ |
| 396 | Name: "mydir", |
| 397 | Mode: os.ModeDir | 0o755, |
| 398 | }, |
| 399 | }, err |
| 400 | }, |
| 401 | }) |
| 402 | err := runCopy(context.TODO(), fakeCli, copyOptions{ |
| 403 | source: "container:/mydir", |
| 404 | destination: destDir.Path(), |
| 405 | }) |
| 406 | assert.NilError(t, err) |
| 407 | errOut := fakeCli.ErrBuffer().String() |
| 408 | assert.Check(t, is.Contains(errOut, "Successfully copied")) |
| 409 | // For directories from container, content size is unknown so |
| 410 | // reportedSize == copiedSize and "(transferred ...)" is omitted. |
| 411 | assert.Check(t, !strings.Contains(errOut, "(transferred")) |
| 412 | } |
| 413 | |
| 414 | func TestCopyToContainerStdinReportsTransferredSize(t *testing.T) { |
| 415 | // When copying from stdin, content size is unknown. |