fs_test.go 1.7 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283
  1. package utils
  2. import (
  3. "path/filepath"
  4. "testing"
  5. )
  6. func abs(t *testing.T, p string) string {
  7. o, err := filepath.Abs(p)
  8. if err != nil {
  9. t.Fatal(err)
  10. }
  11. return o
  12. }
  13. func TestFollowSymLinkNormal(t *testing.T) {
  14. link := "testdata/fs/a/d/c/data"
  15. rewrite, err := FollowSymlinkInScope(link, "testdata")
  16. if err != nil {
  17. t.Fatal(err)
  18. }
  19. if expected := abs(t, "testdata/b/c/data"); expected != rewrite {
  20. t.Fatalf("Expected %s got %s", expected, rewrite)
  21. }
  22. }
  23. func TestFollowSymLinkRandomString(t *testing.T) {
  24. if _, err := FollowSymlinkInScope("toto", "testdata"); err == nil {
  25. t.Fatal("Random string should fail but didn't")
  26. }
  27. }
  28. func TestFollowSymLinkLastLink(t *testing.T) {
  29. link := "testdata/fs/a/d"
  30. rewrite, err := FollowSymlinkInScope(link, "testdata")
  31. if err != nil {
  32. t.Fatal(err)
  33. }
  34. if expected := abs(t, "testdata/b"); expected != rewrite {
  35. t.Fatalf("Expected %s got %s", expected, rewrite)
  36. }
  37. }
  38. func TestFollowSymLinkRelativeLink(t *testing.T) {
  39. link := "testdata/fs/a/e/c/data"
  40. rewrite, err := FollowSymlinkInScope(link, "testdata")
  41. if err != nil {
  42. t.Fatal(err)
  43. }
  44. if expected := abs(t, "testdata/fs/b/c/data"); expected != rewrite {
  45. t.Fatalf("Expected %s got %s", expected, rewrite)
  46. }
  47. }
  48. func TestFollowSymLinkRelativeLinkScope(t *testing.T) {
  49. link := "testdata/fs/a/f"
  50. rewrite, err := FollowSymlinkInScope(link, "testdata")
  51. if err != nil {
  52. t.Fatal(err)
  53. }
  54. if expected := abs(t, "testdata/test"); expected != rewrite {
  55. t.Fatalf("Expected %s got %s", expected, rewrite)
  56. }
  57. link = "testdata/fs/b/h"
  58. rewrite, err = FollowSymlinkInScope(link, "testdata")
  59. if err != nil {
  60. t.Fatal(err)
  61. }
  62. if expected := abs(t, "testdata/root"); expected != rewrite {
  63. t.Fatalf("Expected %s got %s", expected, rewrite)
  64. }
  65. }