1
0

pathutil_test.go 1.2 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980
  1. package pathutil
  2. import (
  3. "testing"
  4. "github.com/stretchr/testify/assert"
  5. )
  6. func TestClean(t *testing.T) {
  7. tests := []struct {
  8. path string
  9. wantVal string
  10. }{
  11. {
  12. path: "../../../readme.txt",
  13. wantVal: "readme.txt",
  14. },
  15. {
  16. path: "a/../../../readme.txt",
  17. wantVal: "readme.txt",
  18. },
  19. {
  20. path: "/../a/b/../c/../readme.txt",
  21. wantVal: "a/readme.txt",
  22. },
  23. {
  24. path: "../../objects/info/..",
  25. wantVal: "objects",
  26. },
  27. {
  28. path: "/a/readme.txt",
  29. wantVal: "a/readme.txt",
  30. },
  31. {
  32. path: "/",
  33. wantVal: "",
  34. },
  35. {
  36. path: "/a/b/c/readme.txt",
  37. wantVal: "a/b/c/readme.txt",
  38. },
  39. // Windows-specific
  40. {
  41. path: `..\..\..\readme.txt`,
  42. wantVal: "readme.txt",
  43. },
  44. {
  45. path: `a\..\..\..\readme.txt`,
  46. wantVal: "readme.txt",
  47. },
  48. {
  49. path: `\..\a\b\..\c\..\readme.txt`,
  50. wantVal: "a/readme.txt",
  51. },
  52. {
  53. path: `\a\readme.txt`,
  54. wantVal: "a/readme.txt",
  55. },
  56. {
  57. path: `..\..\..\../README.md`,
  58. wantVal: "README.md",
  59. },
  60. {
  61. path: `\`,
  62. wantVal: "",
  63. },
  64. {
  65. path: `\a\b\c\readme.txt`,
  66. wantVal: `a/b/c/readme.txt`,
  67. },
  68. }
  69. for _, test := range tests {
  70. t.Run(test.path, func(t *testing.T) {
  71. assert.Equal(t, test.wantVal, Clean(test.path))
  72. })
  73. }
  74. }