logo

utils-std

Collection of commonly available Unix tools git clone https://anongit.hacktivis.me/git/utils-std.git/

realpath.sh (3141B)


  1. #!/bin/sh
  2. # SPDX-FileCopyrightText: 2017 Haelwenn (lanodan) Monnier <contact+utils@hacktivis.me>
  3. # SPDX-License-Identifier: MPL-2.0
  4. target="$(dirname "$0")/../cmd/realpath"
  5. plans=34
  6. . "$(dirname "$0")/tap.sh"
  7. t . '.' "${PWD}
  8. "
  9. t / / '/
  10. '
  11. t /var /var '/var
  12. '
  13. t /var/empty /var/empty '/var/empty
  14. '
  15. t --exit=1 /var/empty/foo/bar /var/empty/foo/bar 'realpath: error: Failed canonilizing parent of full path "/var/empty/foo/bar": No such file or directory
  16. '
  17. t --exit=1 /var/empty/foo/bar/ /var/empty/foo/bar/ 'realpath: error: Failed canonilizing parent of full path "/var/empty/foo/bar": No such file or directory
  18. '
  19. t --exit=1 /var/empty/foo/bar// /var/empty/foo/bar// 'realpath: error: Failed canonilizing parent of full path "/var/empty/foo/bar": No such file or directory
  20. '
  21. t --exit=1 q:/var/empty/foo/bar// '-q /var/empty/foo/bar//'
  22. t e:/ '-e /' '/
  23. '
  24. t e:/var '-e /var' '/var
  25. '
  26. t --exit=1 e:/var/empty/foo '-e /var/empty/foo' 'realpath: error: Failed canonilizing "/var/empty/foo": No such file or directory
  27. '
  28. t --exit=1 e:/var/empty/foo/ '-e /var/empty/foo/' 'realpath: error: Failed canonilizing "/var/empty/foo/": No such file or directory
  29. '
  30. t --exit=1 e:/var/empty/foo// '-e /var/empty/foo//' 'realpath: error: Failed canonilizing "/var/empty/foo//": No such file or directory
  31. '
  32. t --exit=1 e:/var/empty/foo/bar '-e /var/empty/foo/bar' 'realpath: error: Failed canonilizing "/var/empty/foo/bar": No such file or directory
  33. '
  34. t --exit=1 e:/var/empty/foo/bar/ '-e /var/empty/foo/bar/' 'realpath: error: Failed canonilizing "/var/empty/foo/bar/": No such file or directory
  35. '
  36. t --exit=1 e:/var/empty/foo/bar// '-e /var/empty/foo/bar//' 'realpath: error: Failed canonilizing "/var/empty/foo/bar//": No such file or directory
  37. '
  38. t --exit=1 qe:/var/empty/foo/bar// '-qe /var/empty/foo/bar//'
  39. # Non-directory
  40. t /dev/null /dev/null '/dev/null
  41. '
  42. t e:/dev/null '-e /dev/null' '/dev/null
  43. '
  44. t E:/dev/null '-E /dev/null' '/dev/null
  45. '
  46. t --exit=1 /dev/null/ /dev/null/ 'realpath: error: Failed canonilizing "/dev/null/": Not a directory
  47. '
  48. t --exit=1 e:/dev/null/ '-e /dev/null/' 'realpath: error: Failed canonilizing "/dev/null/": Not a directory
  49. '
  50. t --exit=1 E:/dev/null/ '-E /dev/null/' 'realpath: error: Failed canonilizing "/dev/null/": Not a directory
  51. '
  52. t --exit=1 qE:/dev/null/ '-qE /dev/null/'
  53. t --exit=1 /dev/null/.. /dev/null/.. 'realpath: error: Failed canonilizing "/dev/null/..": Not a directory
  54. '
  55. t --exit=1 e:/dev/null/.. '-e /dev/null/..' 'realpath: error: Failed canonilizing "/dev/null/..": Not a directory
  56. '
  57. t --exit=1 E:/dev/null/.. '-E /dev/null/..' 'realpath: error: Failed canonilizing "/dev/null/..": Not a directory
  58. '
  59. # Zero-separation
  60. # t z:/dev/null_/var/empty '-z /dev/null /var/empty' $'/dev/null\0/var/empty\0'
  61. # No final newline
  62. t n:/dev/null_/var/empty '-n /dev/null /var/empty' '/dev/null
  63. /var/empty'
  64. # As required by POSIX.1-2024 -E and -e aren't erroneous
  65. t Ee:/dev/null '-E -e /dev/null' '/dev/null
  66. '
  67. t s:foo '-s foo' "$PWD/foo
  68. "
  69. t s:foo/bar '-s foo/bar' "$PWD/foo/bar
  70. "
  71. t s:./foo/bar '-s ./foo/bar' "$PWD/foo/bar
  72. "
  73. t s:/foo/bar '-s /foo/bar' "/foo/bar
  74. "
  75. t s:/foo/del/../bar '-s /foo/del/../bar' "/foo/bar
  76. "