archive_windows_test.go 1.6 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768
  1. //go:build windows
  2. package archive // import "github.com/docker/docker/pkg/archive"
  3. import (
  4. "os"
  5. "path/filepath"
  6. "testing"
  7. )
  8. func TestCopyFileWithInvalidDest(t *testing.T) {
  9. // TODO Windows: This is currently failing. Not sure what has
  10. // recently changed in CopyWithTar as used to pass. Further investigation
  11. // is required.
  12. t.Skip("Currently fails")
  13. folder, err := os.MkdirTemp("", "docker-archive-test")
  14. if err != nil {
  15. t.Fatal(err)
  16. }
  17. defer os.RemoveAll(folder)
  18. dest := "c:dest"
  19. srcFolder := filepath.Join(folder, "src")
  20. src := filepath.Join(folder, "src", "src")
  21. err = os.MkdirAll(srcFolder, 0o740)
  22. if err != nil {
  23. t.Fatal(err)
  24. }
  25. os.WriteFile(src, []byte("content"), 0o777)
  26. err = defaultCopyWithTar(src, dest)
  27. if err == nil {
  28. t.Fatalf("archiver.CopyWithTar should throw an error on invalid dest.")
  29. }
  30. }
  31. func TestCanonicalTarName(t *testing.T) {
  32. cases := []struct {
  33. in string
  34. isDir bool
  35. expected string
  36. }{
  37. {"foo", false, "foo"},
  38. {"foo", true, "foo/"},
  39. {`foo\bar`, false, "foo/bar"},
  40. {`foo\bar`, true, "foo/bar/"},
  41. }
  42. for _, v := range cases {
  43. if canonicalTarName(v.in, v.isDir) != v.expected {
  44. t.Fatalf("wrong canonical tar name. expected:%s got:%s", v.expected, canonicalTarName(v.in, v.isDir))
  45. }
  46. }
  47. }
  48. func TestChmodTarEntry(t *testing.T) {
  49. cases := []struct {
  50. in, expected os.FileMode
  51. }{
  52. {0o000, 0o111},
  53. {0o777, 0o755},
  54. {0o644, 0o755},
  55. {0o755, 0o755},
  56. {0o444, 0o555},
  57. }
  58. for _, v := range cases {
  59. if out := chmodTarEntry(v.in); out != v.expected {
  60. t.Fatalf("wrong chmod. expected:%v got:%v", v.expected, out)
  61. }
  62. }
  63. }