X-Git-Url: https://arthur.barton.de/cgi-bin/gitweb.cgi?a=blobdiff_plain;f=t%2Ftest-restore-map-owner.sh;h=bf9362e46dc39614e900ddf6df68875649d25d73;hb=ae9cde2e3df85569bf76487a9528080926841db5;hp=05c3d41eb24693f7545e70d242d1e1a99651cbb7;hpb=3b254514491fc04a5bb490c0bcf045168f696fee;p=bup.git diff --git a/t/test-restore-map-owner.sh b/t/test-restore-map-owner.sh index 05c3d41..bf9362e 100755 --- a/t/test-restore-map-owner.sh +++ b/t/test-restore-map-owner.sh @@ -1,7 +1,10 @@ #!/usr/bin/env bash -. ./wvtest-bup.sh +. ./wvtest-bup.sh || exit $? +. t/lib.sh || exit $? -if [ $(t/root-status) != root ]; then +root_status="$(t/root-status)" || exit $? + +if [ "$root_status" != root ]; then echo 'Not root: skipping restore --map-* tests.' exit 0 # FIXME: add WVSKIP. fi @@ -21,7 +24,7 @@ other_uinfo=$(WVPASS t/id-other-than --user "$user") || exit $? other_user="${other_uinfo%%:*}" other_uid="${other_uinfo##*:}" -other_ginfo=$(WVPASS t/id-other-than --group "$group") || exit $? +other_ginfo=$(WVPASS t/id-other-than --group "$group" 0) || exit $? other_group="${other_ginfo%%:*}" other_gid="${other_ginfo##*:}" @@ -79,14 +82,26 @@ WVPASS grep -qE "^uid: $other_uid\$" foo-xstat WVPASS grep -qE "^group: $other_group\$" foo-xstat WVPASS grep -qE "^gid: $other_gid\$" foo-xstat -WVSTART "restore --map-user/group/uid/gid (zero uid/gid trumps all)" -WVPASS rm -rf dest -WVPASS bup restore -C dest \ - --map-user "$user=$other_user" --map-group "$group=$other_group" \ - --map-uid "$uid=0" --map-gid "$gid=0" \ - "src/latest/$(pwd)/src/" -WVPASS bup xstat dest/foo > foo-xstat -WVPASS grep -qE "^uid: 0\$" foo-xstat -WVPASS grep -qE "^gid: 0\$" foo-xstat +has_uid_gid_0=$(WVPASS bup-python -c " +import grp, pwd +try: + pwd.getpwuid(0) + grp.getgrgid(0) + print 'yes' +except KeyError, ex: + pass +" 2>/dev/null) || exit $? +if [ "$has_uid_gid_0" == yes ] +then + WVSTART "restore --map-user/group/uid/gid (zero uid/gid trumps all)" + WVPASS rm -rf dest + WVPASS bup restore -C dest \ + --map-user "$user=$other_user" --map-group "$group=$other_group" \ + --map-uid "$uid=0" --map-gid "$gid=0" \ + "src/latest/$(pwd)/src/" + WVPASS bup xstat dest/foo > foo-xstat + WVPASS grep -qE "^uid: 0\$" foo-xstat + WVPASS grep -qE "^gid: 0\$" foo-xstat -WVPASS rm -rf "$tmpdir" + WVPASS rm -rf "$tmpdir" +fi