logo

utils-std

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

chown.sh (3092B)


  1. #!/bin/sh
  2. # SPDX-FileCopyrightText: 2017 Haelwenn (lanodan) Monnier <contact+utils@hacktivis.me>
  3. # SPDX-License-Identifier: MPL-2.0
  4. plans=20
  5. WD="$(dirname "$0")/../"
  6. target="${WD}/cmd/chown"
  7. . "${WD}/test-cmd/tap.sh"
  8. tmpfile="${TMPDIR-/tmp}/test_chown_$(date +%s)"
  9. ref_file="${TMPDIR-/tmp}/test_chown_$(date +%s).ref"
  10. loopdir="${TMPDIR-/tmp}/test_chown_$(date +%s).d/loop.d"
  11. uid=$(id -u)
  12. gid=$(id -g)
  13. uname=$(id -un)
  14. gname=$(id -gn)
  15. t_cmd touch '' touch "$tmpfile" "$ref_file"
  16. t_cmd mkdir_tmpdir '' mkdir -p "$loopdir"
  17. t_args --exit=1 enoent "chown: error: Failed getting status for '/var/empty/enoent': No such file or directory
  18. " -v nobody:nobody /var/empty/enoent
  19. t_args ids_normalize '' "${uid}:${gid}" "$tmpfile" "$ref_file" "$loopdir"
  20. t_args ids_unchanged "chown: Ownership already set to ${uid}:${gid} for '${tmpfile}'
  21. " -v "${uid}:${gid}" "$tmpfile"
  22. t_args uid_unchanged "chown: Ownership already set to ${uid}:${gid} for '${tmpfile}'
  23. " -v "${uid}" "$tmpfile"
  24. t_args gid_unchanged "chown: Ownership already set to ${uid}:${gid} for '${tmpfile}'
  25. " -v ":${gid}" "$tmpfile"
  26. t_args names_unchanged "chown: Ownership already set to ${uid}:${gid} for '${tmpfile}'
  27. " -v "${uname}:${gname}" "$tmpfile"
  28. t_args uname_unchanged "chown: Ownership already set to ${uid}:${gid} for '${tmpfile}'
  29. " -v "${uname}" "$tmpfile"
  30. t_args gname_unchanged "chown: Ownership already set to ${uid}:${gid} for '${tmpfile}'
  31. " -v ":${gname}" "$tmpfile"
  32. t_args ref_unchanged "chown: Ownership already set to ${uid}:${gid} for '${tmpfile}'
  33. " -v --reference "$ref_file" "$tmpfile"
  34. t_cmd loop_symlink '' ln -s "../loop.d/" "$loopdir/loop"
  35. t_args loop_normalize '' "${uid}:${gid}" "$loopdir/loop"
  36. t_args loop0 "chown: Ownership already set to ${uid}:${gid} for '${loopdir}'
  37. " -v "$uid:$gid" "$loopdir"
  38. t_args loop1 "chown: Ownership already set to ${uid}:${gid} for '${loopdir}/loop'
  39. " -v "$uid:$gid" "$loopdir/loop"
  40. t_args loop2 "chown: Ownership already set to ${uid}:${gid} for '${loopdir}/loop/loop'
  41. " -v "$uid:$gid" "$loopdir/loop/loop"
  42. t_args --exit=0 loop_RH "\
  43. chown: Ownership already set to ${uid}:${gid} for '${loopdir}/loop'
  44. chown: Ownership already set to ${uid}:${gid} for '${loopdir}/loop/loop'
  45. " -v -R -H "$uid:$gid" "$loopdir/loop"
  46. t_args --exit=1 loop_RL "\
  47. chown: error: Maximum levels of recursion (100) reached at file '${loopdir}/loop/loop/loop/loop/loop/loop/loop/loop/loop/loop/loop/loop/loop/loop/loop/loop/loop/loop/loop/loop/loop/loop/loop/loop/loop/loop/loop/loop/loop/loop/loop/loop/loop/loop/loop/loop/loop/loop/loop/loop/loop/loop/loop/loop/loop/loop/loop/loop/loop/loop/loop/loop/loop/loop/loop/loop/loop/loop/loop/loop/loop/loop/loop/loop/loop/loop/loop/loop/loop/loop/loop/loop/loop/loop/loop/loop/loop/loop/loop/loop/loop/loop/loop/loop/loop/loop/loop/loop/loop/loop/loop/loop/loop/loop/loop/loop/loop/loop/loop/loop/loop'
  48. " -R -L "$uid:$gid" "$loopdir/loop"
  49. t_args --exit=0 loop_RP "chown: Ownership already set to ${uid}:${gid} for '${loopdir}/loop'
  50. " -v -R -P "$uid:$gid" "$loopdir/loop"
  51. t_cmd cleanup '' rm -fr "$tmpfile" "$ref_file" "$loopdir/loop" "$loopdir"