copy_test.go 2.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566
  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. "gotest.tools/assert"
  10. is "gotest.tools/assert/cmp"
  11. "gotest.tools/skip"
  12. )
  13. func TestCopyFromContainerPathDoesNotExist(t *testing.T) {
  14. defer setupTest(t)()
  15. skip.If(t, testEnv.OSType == "windows")
  16. ctx := context.Background()
  17. apiclient := testEnv.APIClient()
  18. cid := container.Create(t, ctx, apiclient)
  19. _, _, err := apiclient.CopyFromContainer(ctx, cid, "/dne")
  20. assert.Check(t, client.IsErrNotFound(err))
  21. expected := fmt.Sprintf("No such container:path: %s:%s", cid, "/dne")
  22. assert.Check(t, is.ErrorContains(err, expected))
  23. }
  24. func TestCopyFromContainerPathIsNotDir(t *testing.T) {
  25. defer setupTest(t)()
  26. skip.If(t, testEnv.OSType == "windows")
  27. ctx := context.Background()
  28. apiclient := testEnv.APIClient()
  29. cid := container.Create(t, ctx, apiclient)
  30. _, _, err := apiclient.CopyFromContainer(ctx, cid, "/etc/passwd/")
  31. assert.Assert(t, is.ErrorContains(err, "not a directory"))
  32. }
  33. func TestCopyToContainerPathDoesNotExist(t *testing.T) {
  34. defer setupTest(t)()
  35. skip.If(t, testEnv.OSType == "windows")
  36. ctx := context.Background()
  37. apiclient := testEnv.APIClient()
  38. cid := container.Create(t, ctx, apiclient)
  39. err := apiclient.CopyToContainer(ctx, cid, "/dne", nil, types.CopyToContainerOptions{})
  40. assert.Check(t, client.IsErrNotFound(err))
  41. expected := fmt.Sprintf("No such container:path: %s:%s", cid, "/dne")
  42. assert.Check(t, is.ErrorContains(err, expected))
  43. }
  44. func TestCopyToContainerPathIsNotDir(t *testing.T) {
  45. defer setupTest(t)()
  46. skip.If(t, testEnv.OSType == "windows")
  47. ctx := context.Background()
  48. apiclient := testEnv.APIClient()
  49. cid := container.Create(t, ctx, apiclient)
  50. err := apiclient.CopyToContainer(ctx, cid, "/etc/passwd/", nil, types.CopyToContainerOptions{})
  51. assert.Assert(t, is.ErrorContains(err, "not a directory"))
  52. }