ln.test 2.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990
  1. #!/bin/bash
  2. # Copyright 2013 Robin Mittal <robinmittal.it@gmail.com>
  3. # Copyright 2013 Divya Kothari <divya.s.kothari@gmail.com>
  4. [ -f testing.sh ] && . testing.sh
  5. #testing "name" "command" "result" "infile" "stdin"
  6. #set -x
  7. echo file1 > file
  8. testing "create_hardlink" "ln file hlink && [ file -ef hlink ] &&
  9. echo 'yes'" "yes\n" "" ""
  10. testing "create_softlink" "ln -s file slink && [ -L slink ] &&
  11. readlink slink" "file\n" "" ""
  12. rm slink hlink
  13. echo hlink1 > hlink
  14. testing "force_create_hardlink" "ln -f file hlink &&
  15. [ file -ef hlink ] && cat hlink 2>/dev/null" "file1\n" "" ""
  16. echo slink1 > slink
  17. testing "force_create_symlink" "ln -f -s file slink &&
  18. [ -L slink ] && readlink slink" "file\n" "" ""
  19. rm slink hlink
  20. echo hlink1 > hlink
  21. set +e
  22. testing "preserves_hardlinks" "ln file hlink 2>/dev/null || echo 'yes'" \
  23. "yes\n" "" ""
  24. echo slink1 > slink
  25. set +e
  26. testing "preserves_symlinks" "ln -s file slink 2>/dev/null || echo 'yes'" \
  27. "yes\n" "" ""
  28. rm slink hlink
  29. mkdir dir
  30. testing "multilevel_symbolic_links" "ln -s dir slink &&
  31. ln -s file slink && [ -L slink -a -L slink/file ] &&
  32. readlink slink && readlink slink/file" "dir\nfile\n" "" ""
  33. rm slink
  34. testing "no_dereference" "ln -s dir slink &&
  35. ln -n -s file slink 2>/dev/null || [ -L slink ] && readlink slink" \
  36. "dir\n" "" ""
  37. rm slink
  38. testing "-T acts like -n" "ln -s dir slink &&
  39. ln -Tsf file slink || [ -L slink ] && readlink slink" "file\n" "" ""
  40. rm slink
  41. testing "-T with dir" "ln -Ts file dir 2>/dev/null || echo yes" "yes\n" "" ""
  42. rm -rf file dir slink
  43. testing "-t" "ln -st . one/two three && readlink two three" "one/two\nthree\n" \
  44. "" ""
  45. rm -f two three
  46. touch file1 file2 && mkdir dir
  47. testing "create_multiple_hardlinks" "ln file* dir/ &&
  48. [ file1 -ef dir/file1 -a file2 -ef dir/file2 ] && echo 'yes'" "yes\n" "" ""
  49. rm -rf file* dir
  50. touch file1 file2 && mkdir dir
  51. testing "create_multiple_softlinks" "ln -s file* dir/ &&
  52. [ -L dir/file1 -a -L dir/file2 ] && readlink dir/file1 &&
  53. readlink dir/file2" "file1\nfile2\n" "" ""
  54. rm -rf file* dir
  55. echo file1 > file
  56. testing "create_softlink_and_remove_sourcefile" "ln -s file slink &&
  57. [ -L slink ] && rm file && cat slink 2>/dev/null || echo 'yes' " \
  58. "yes\n" "" ""
  59. rm -f file slink
  60. echo file1 > file
  61. testing "create_hardlink_and_remove_sourcefile" "ln file hlink &&
  62. [ file -ef hlink ] && rm file && [ -f hlink ] && echo 'yes'" \
  63. "yes\n" "" ""
  64. rm -f file hlink
  65. mkdir -p one/two
  66. ln -s . circular
  67. mkdir -p three
  68. echo hello > three/four
  69. testing "ln -r" \
  70. "ln -sr circular/three/../three/four one/two/five && cat one/two/five" \
  71. "hello\n" "" ""
  72. rm -rf one three circular