copy_test.go 2.0 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465
  1. package container // import "github.com/docker/docker/integration/container"
  2. import (
  3. "context"
  4. "fmt"
  5. "testing"
  6. "github.com/docker/docker/api/types"
  7. "github.com/docker/docker/client"
  8. "github.com/docker/docker/integration/internal/container"
  9. "github.com/docker/docker/internal/testutil"
  10. "github.com/gotestyourself/gotestyourself/skip"
  11. "github.com/stretchr/testify/require"
  12. )
  13. func TestCopyFromContainerPathDoesNotExist(t *testing.T) {
  14. defer setupTest(t)()
  15. ctx := context.Background()
  16. apiclient := testEnv.APIClient()
  17. cid := container.Create(t, ctx, apiclient)
  18. _, _, err := apiclient.CopyFromContainer(ctx, cid, "/dne")
  19. require.True(t, client.IsErrNotFound(err))
  20. expected := fmt.Sprintf("No such container:path: %s:%s", cid, "/dne")
  21. testutil.ErrorContains(t, err, expected)
  22. }
  23. func TestCopyFromContainerPathIsNotDir(t *testing.T) {
  24. defer setupTest(t)()
  25. skip.If(t, testEnv.OSType == "windows")
  26. ctx := context.Background()
  27. apiclient := testEnv.APIClient()
  28. cid := container.Create(t, ctx, apiclient)
  29. _, _, err := apiclient.CopyFromContainer(ctx, cid, "/etc/passwd/")
  30. require.Contains(t, err.Error(), "not a directory")
  31. }
  32. func TestCopyToContainerPathDoesNotExist(t *testing.T) {
  33. defer setupTest(t)()
  34. skip.If(t, testEnv.OSType == "windows")
  35. ctx := context.Background()
  36. apiclient := testEnv.APIClient()
  37. cid := container.Create(t, ctx, apiclient)
  38. err := apiclient.CopyToContainer(ctx, cid, "/dne", nil, types.CopyToContainerOptions{})
  39. require.True(t, client.IsErrNotFound(err))
  40. expected := fmt.Sprintf("No such container:path: %s:%s", cid, "/dne")
  41. testutil.ErrorContains(t, err, expected)
  42. }
  43. func TestCopyToContainerPathIsNotDir(t *testing.T) {
  44. defer setupTest(t)()
  45. skip.If(t, testEnv.OSType == "windows")
  46. ctx := context.Background()
  47. apiclient := testEnv.APIClient()
  48. cid := container.Create(t, ctx, apiclient)
  49. err := apiclient.CopyToContainer(ctx, cid, "/etc/passwd/", nil, types.CopyToContainerOptions{})
  50. require.Contains(t, err.Error(), "not a directory")
  51. }