1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72
|
#! /bin/sh
# writable.sh: Will get over-write a writable file?
# Import common functions & definitions.
. ../common/test-common
# You cannot run the test suite as root.
. ../common/not-root
remove command.log log log.stdout log.stderr
f=wrtest
gfile=_g.$f
remove s.$f
# Generate empty file.
: > $f
# Create the s. file and make sure it exists.
docommand W1 "$admin -n -i$f s.$f" 0 "" IGNORE
test -r s.$f || fail admin did not create s.$f
remove $f
echo foo > $f
chmod +w $f
# Try running get when gfile was writable -- it should fail.
docommand W2 "${vg_get} s.$f" 1 IGNORE IGNORE
remove $gfile
test -f $gfile && miscarry could not remove _g.$f
# Now run get with the -G option and it should work even
# though the file's usual name is occupied by a writable file.
docommand W3 "${vg_get} -G$gfile s.$f" 0 "1.1\n0 lines\n" IGNORE
# If you specify the "-k" option, the gotten file should be read-write.
# If you don't specify -k or -e, it will be read-only. -e implies -k.
remove $gfile $f
docommand W4 "${vg_get} s.$f" 0 "1.1\n0 lines\n" IGNORE
# Make sure the file is read only.
echo_nonl "W5..."
if test -w $f
then
fail W5: "get s.$f created writable $f"
fi
echo passed
# Now do the same again, using the -k option.
remove $gfile $f
docommand W6 "${vg_get} -k s.$f" 0 "1.1\n0 lines\n" IGNORE
# Make sure the file is read only.
echo_nonl "W7..."
if test -w $f
then
true
else
fail W5: "get -k s.$f created read-only $f. It should be writable"
fi
echo passed
remove $f s.$f $gfile
remove command.log
success
|