diff options
Diffstat (limited to 'tools/regression/fstest/tests/chflags/00.t')
-rw-r--r-- | tools/regression/fstest/tests/chflags/00.t | 208 |
1 files changed, 95 insertions, 113 deletions
diff --git a/tools/regression/fstest/tests/chflags/00.t b/tools/regression/fstest/tests/chflags/00.t index 5ca5c73..33d3195 100644 --- a/tools/regression/fstest/tests/chflags/00.t +++ b/tools/regression/fstest/tests/chflags/00.t @@ -14,14 +14,14 @@ FreeBSD:UFS) userflags="UF_NODUMP,UF_IMMUTABLE,UF_APPEND,UF_NOUNLINK,UF_OPAQUE" systemflags="SF_ARCHIVED,SF_IMMUTABLE,SF_APPEND,SF_NOUNLINK" - echo "1..247" + echo "1..780" ;; FreeBSD:ZFS) allflags="UF_NODUMP,SF_IMMUTABLE,SF_APPEND,SF_NOUNLINK" userflags="UF_NODUMP" systemflags="SF_IMMUTABLE,SF_APPEND,SF_NOUNLINK" - echo "1..167" + echo "1..520" ;; *) quick_exit @@ -36,41 +36,39 @@ expect 0 mkdir ${n2} 0755 cdir=`pwd` cd ${n2} -expect 0 create ${n0} 0644 -expect none stat ${n0} flags -expect 0 chflags ${n0} ${allflags} -expect ${allflags} stat ${n0} flags -expect 0 chflags ${n0} ${userflags} -expect ${userflags} stat ${n0} flags -expect 0 chflags ${n0} ${systemflags} -expect ${systemflags} stat ${n0} flags -expect 0 chflags ${n0} none -expect none stat ${n0} flags -expect 0 unlink ${n0} - -expect 0 mkdir ${n0} 0644 -expect none stat ${n0} flags -expect 0 chflags ${n0} ${allflags} -expect ${allflags} stat ${n0} flags -expect 0 chflags ${n0} ${userflags} -expect ${userflags} stat ${n0} flags -expect 0 chflags ${n0} ${systemflags} -expect ${systemflags} stat ${n0} flags -expect 0 chflags ${n0} none -expect none stat ${n0} flags -expect 0 rmdir ${n0} - -expect 0 mkfifo ${n0} 0644 -expect none stat ${n0} flags -expect 0 chflags ${n0} ${allflags} -expect ${allflags} stat ${n0} flags -expect 0 chflags ${n0} ${userflags} -expect ${userflags} stat ${n0} flags -expect 0 chflags ${n0} ${systemflags} -expect ${systemflags} stat ${n0} flags -expect 0 chflags ${n0} none -expect none stat ${n0} flags -expect 0 unlink ${n0} +for type in regular dir fifo block char socket; do + create_file ${type} ${n0} 0 0 + expect none stat ${n0} flags + expect 0 chflags ${n0} ${allflags} + expect ${allflags} stat ${n0} flags + expect 0 chflags ${n0} ${userflags} + expect ${userflags} stat ${n0} flags + expect 0 chflags ${n0} ${systemflags} + expect ${systemflags} stat ${n0} flags + expect 0 chflags ${n0} none + expect none stat ${n0} flags + if [ "${type}" = "dir" ]; then + expect 0 rmdir ${n0} + else + expect 0 unlink ${n0} + fi + + create_file ${type} ${n0} 0 0 + expect none stat ${n0} flags + expect 0 lchflags ${n0} ${allflags} + expect ${allflags} stat ${n0} flags + expect 0 lchflags ${n0} ${userflags} + expect ${userflags} stat ${n0} flags + expect 0 lchflags ${n0} ${systemflags} + expect ${systemflags} stat ${n0} flags + expect 0 lchflags ${n0} none + expect none stat ${n0} flags + if [ "${type}" = "dir" ]; then + expect 0 rmdir ${n0} + else + expect 0 unlink ${n0} + fi +done expect 0 create ${n0} 0644 expect 0 symlink ${n0} ${n1} @@ -111,86 +109,70 @@ expect 0 unlink ${n1} expect 0 unlink ${n0} # successful chflags(2) updates ctime. -expect 0 create ${n0} 0644 -for flag in `echo ${allflags},none | tr ',' ' '`; do - ctime1=`${fstest} stat ${n0} ctime` - sleep 1 - expect 0 chflags ${n0} ${flag} - ctime2=`${fstest} stat ${n0} ctime` - test_check $ctime1 -lt $ctime2 +for type in regular dir fifo block char socket symlink; do + if [ "${type}" != "symlink" ]; then + create_file ${type} ${n0} 0 0 + for flag in `echo ${allflags},none | tr ',' ' '`; do + ctime1=`${fstest} stat ${n0} ctime` + sleep 1 + expect 0 chflags ${n0} ${flag} + ctime2=`${fstest} stat ${n0} ctime` + test_check $ctime1 -lt $ctime2 + done + if [ "${type}" = "dir" ]; then + expect 0 rmdir ${n0} + else + expect 0 unlink ${n0} + fi + fi + + create_file ${type} ${n0} 0 0 + for flag in `echo ${allflags},none | tr ',' ' '`; do + ctime1=`${fstest} lstat ${n0} ctime` + sleep 1 + expect 0 lchflags ${n0} ${flag} + ctime2=`${fstest} lstat ${n0} ctime` + test_check $ctime1 -lt $ctime2 + done + if [ "${type}" = "dir" ]; then + expect 0 rmdir ${n0} + else + expect 0 unlink ${n0} + fi done -expect 0 unlink ${n0} - -expect 0 mkdir ${n0} 0755 -for flag in `echo ${allflags},none | tr ',' ' '`; do - ctime1=`${fstest} stat ${n0} ctime` - sleep 1 - expect 0 chflags ${n0} ${flag} - ctime2=`${fstest} stat ${n0} ctime` - test_check $ctime1 -lt $ctime2 -done -expect 0 rmdir ${n0} - -expect 0 mkfifo ${n0} 0644 -for flag in `echo ${allflags},none | tr ',' ' '`; do - ctime1=`${fstest} stat ${n0} ctime` - sleep 1 - expect 0 chflags ${n0} ${flag} - ctime2=`${fstest} stat ${n0} ctime` - test_check $ctime1 -lt $ctime2 -done -expect 0 unlink ${n0} - -expect 0 symlink ${n1} ${n0} -for flag in `echo ${allflags},none | tr ',' ' '`; do - ctime1=`${fstest} lstat ${n0} ctime` - sleep 1 - expect 0 lchflags ${n0} ${flag} - ctime2=`${fstest} lstat ${n0} ctime` - test_check $ctime1 -lt $ctime2 -done -expect 0 unlink ${n0} # unsuccessful chflags(2) does not update ctime. -expect 0 create ${n0} 0644 -for flag in `echo ${allflags},none | tr ',' ' '`; do - ctime1=`${fstest} stat ${n0} ctime` - sleep 1 - expect EPERM -u 65534 chflags ${n0} ${flag} - ctime2=`${fstest} stat ${n0} ctime` - test_check $ctime1 -eq $ctime2 -done -expect 0 unlink ${n0} - -expect 0 mkdir ${n0} 0755 -for flag in `echo ${allflags},none | tr ',' ' '`; do - ctime1=`${fstest} stat ${n0} ctime` - sleep 1 - expect EPERM -u 65534 chflags ${n0} ${flag} - ctime2=`${fstest} stat ${n0} ctime` - test_check $ctime1 -eq $ctime2 +for type in regular dir fifo block char socket symlink; do + if [ "${type}" != "symlink" ]; then + create_file ${type} ${n0} 0 0 + for flag in `echo ${allflags},none | tr ',' ' '`; do + ctime1=`${fstest} stat ${n0} ctime` + sleep 1 + expect EPERM -u 65534 chflags ${n0} ${flag} + ctime2=`${fstest} stat ${n0} ctime` + test_check $ctime1 -eq $ctime2 + done + if [ "${type}" = "dir" ]; then + expect 0 rmdir ${n0} + else + expect 0 unlink ${n0} + fi + fi + + create_file ${type} ${n0} 0 0 + for flag in `echo ${allflags},none | tr ',' ' '`; do + ctime1=`${fstest} lstat ${n0} ctime` + sleep 1 + expect EPERM -u 65534 lchflags ${n0} ${flag} + ctime2=`${fstest} lstat ${n0} ctime` + test_check $ctime1 -eq $ctime2 + done + if [ "${type}" = "dir" ]; then + expect 0 rmdir ${n0} + else + expect 0 unlink ${n0} + fi done -expect 0 rmdir ${n0} - -expect 0 mkfifo ${n0} 0644 -for flag in `echo ${allflags},none | tr ',' ' '`; do - ctime1=`${fstest} stat ${n0} ctime` - sleep 1 - expect EPERM -u 65534 chflags ${n0} ${flag} - ctime2=`${fstest} stat ${n0} ctime` - test_check $ctime1 -eq $ctime2 -done -expect 0 unlink ${n0} - -expect 0 symlink ${n1} ${n0} -for flag in `echo ${allflags},none | tr ',' ' '`; do - ctime1=`${fstest} lstat ${n0} ctime` - sleep 1 - expect EPERM -u 65534 lchflags ${n0} ${flag} - ctime2=`${fstest} lstat ${n0} ctime` - test_check $ctime1 -eq $ctime2 -done -expect 0 unlink ${n0} cd ${cdir} expect 0 rmdir ${n2} |