chown.sh (3092B)
- #!/bin/sh
- # SPDX-FileCopyrightText: 2017 Haelwenn (lanodan) Monnier <contact+utils@hacktivis.me>
- # SPDX-License-Identifier: MPL-2.0
- plans=20
- WD="$(dirname "$0")/../"
- target="${WD}/cmd/chown"
- . "${WD}/test-cmd/tap.sh"
- tmpfile="${TMPDIR-/tmp}/test_chown_$(date +%s)"
- ref_file="${TMPDIR-/tmp}/test_chown_$(date +%s).ref"
- loopdir="${TMPDIR-/tmp}/test_chown_$(date +%s).d/loop.d"
- uid=$(id -u)
- gid=$(id -g)
- uname=$(id -un)
- gname=$(id -gn)
- t_cmd touch '' touch "$tmpfile" "$ref_file"
- t_cmd mkdir_tmpdir '' mkdir -p "$loopdir"
- t_args --exit=1 enoent "chown: error: Failed getting status for '/var/empty/enoent': No such file or directory
- " -v nobody:nobody /var/empty/enoent
- t_args ids_normalize '' "${uid}:${gid}" "$tmpfile" "$ref_file" "$loopdir"
- t_args ids_unchanged "chown: Ownership already set to ${uid}:${gid} for '${tmpfile}'
- " -v "${uid}:${gid}" "$tmpfile"
- t_args uid_unchanged "chown: Ownership already set to ${uid}:${gid} for '${tmpfile}'
- " -v "${uid}" "$tmpfile"
- t_args gid_unchanged "chown: Ownership already set to ${uid}:${gid} for '${tmpfile}'
- " -v ":${gid}" "$tmpfile"
- t_args names_unchanged "chown: Ownership already set to ${uid}:${gid} for '${tmpfile}'
- " -v "${uname}:${gname}" "$tmpfile"
- t_args uname_unchanged "chown: Ownership already set to ${uid}:${gid} for '${tmpfile}'
- " -v "${uname}" "$tmpfile"
- t_args gname_unchanged "chown: Ownership already set to ${uid}:${gid} for '${tmpfile}'
- " -v ":${gname}" "$tmpfile"
- t_args ref_unchanged "chown: Ownership already set to ${uid}:${gid} for '${tmpfile}'
- " -v --reference "$ref_file" "$tmpfile"
- t_cmd loop_symlink '' ln -s "../loop.d/" "$loopdir/loop"
- t_args loop_normalize '' "${uid}:${gid}" "$loopdir/loop"
- t_args loop0 "chown: Ownership already set to ${uid}:${gid} for '${loopdir}'
- " -v "$uid:$gid" "$loopdir"
- t_args loop1 "chown: Ownership already set to ${uid}:${gid} for '${loopdir}/loop'
- " -v "$uid:$gid" "$loopdir/loop"
- t_args loop2 "chown: Ownership already set to ${uid}:${gid} for '${loopdir}/loop/loop'
- " -v "$uid:$gid" "$loopdir/loop/loop"
- t_args --exit=0 loop_RH "\
- chown: Ownership already set to ${uid}:${gid} for '${loopdir}/loop'
- chown: Ownership already set to ${uid}:${gid} for '${loopdir}/loop/loop'
- " -v -R -H "$uid:$gid" "$loopdir/loop"
- t_args --exit=1 loop_RL "\
- 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'
- " -R -L "$uid:$gid" "$loopdir/loop"
- t_args --exit=0 loop_RP "chown: Ownership already set to ${uid}:${gid} for '${loopdir}/loop'
- " -v -R -P "$uid:$gid" "$loopdir/loop"
- t_cmd cleanup '' rm -fr "$tmpfile" "$ref_file" "$loopdir/loop" "$loopdir"