diff options
Diffstat (limited to 'tools/regression/fstest/tests/rename/07.t')
-rw-r--r-- | tools/regression/fstest/tests/rename/07.t | 87 |
1 files changed, 78 insertions, 9 deletions
diff --git a/tools/regression/fstest/tests/rename/07.t b/tools/regression/fstest/tests/rename/07.t index 40d04763a370..d65332fed67e 100644 --- a/tools/regression/fstest/tests/rename/07.t +++ b/tools/regression/fstest/tests/rename/07.t @@ -8,7 +8,20 @@ dir=`dirname $0` require chflags -echo "1..106" +case "${os}:${fs}" in +FreeBSD:ZFS) + flags1="SF_IMMUTABLE SF_APPEND" + flags2="SF_NOUNLINK" + echo "1..110" + ;; +FreeBSD:UFS) + flags1="SF_IMMUTABLE SF_APPEND UF_IMMUTABLE UF_APPEND" + flags2="SF_NOUNLINK UF_NOUNLINK" + echo "1..182" + ;; +*) + quick_exit +esac n0=`namegen` n1=`namegen` @@ -17,43 +30,79 @@ n2=`namegen` expect 0 mkdir ${n0} 0755 expect 0 create ${n0}/${n1} 0644 -for flag in SF_IMMUTABLE UF_IMMUTABLE SF_APPEND UF_APPEND; do +for flag in ${flags1}; do expect 0 chflags ${n0} ${flag} expect ${flag} stat ${n0} flags + [ "${flag}" = "SF_APPEND" ] && todo FreeBSD:ZFS "Renaming a file protected by SF_APPEND should return EPERM." expect EPERM rename ${n0}/${n1} ${n2} + [ "${flag}" = "SF_APPEND" ] && todo FreeBSD:ZFS "Renaming a file protected by SF_APPEND should return EPERM." + expect ENOENT rename ${n2} ${n0}/${n1} done expect 0 chflags ${n0} none expect 0 unlink ${n0}/${n1} expect 0 mkdir ${n0}/${n1} 0755 -for flag in SF_IMMUTABLE UF_IMMUTABLE SF_APPEND UF_APPEND; do +for flag in ${flags1}; do expect 0 chflags ${n0} ${flag} expect ${flag} stat ${n0} flags + [ "${flag}" = "SF_APPEND" ] && todo FreeBSD:ZFS "Renaming a file protected by SF_APPEND should return EPERM." expect EPERM rename ${n0}/${n1} ${n2} + [ "${flag}" = "SF_APPEND" ] && todo FreeBSD:ZFS "Renaming a file protected by SF_APPEND should return EPERM." + expect ENOENT rename ${n2} ${n0}/${n1} done expect 0 chflags ${n0} none expect 0 rmdir ${n0}/${n1} expect 0 mkfifo ${n0}/${n1} 0644 -for flag in SF_IMMUTABLE UF_IMMUTABLE SF_APPEND UF_APPEND; do +for flag in ${flags1}; do expect 0 chflags ${n0} ${flag} expect ${flag} stat ${n0} flags + [ "${flag}" = "SF_APPEND" ] && todo FreeBSD:ZFS "Renaming a file protected by SF_APPEND should return EPERM." expect EPERM rename ${n0}/${n1} ${n2} + [ "${flag}" = "SF_APPEND" ] && todo FreeBSD:ZFS "Renaming a file protected by SF_APPEND should return EPERM." + expect ENOENT rename ${n2} ${n0}/${n1} +done +expect 0 chflags ${n0} none +expect 0 unlink ${n0}/${n1} + +expect 0 mknod ${n0}/${n1} c 0644 1 2 +for flag in ${flags1}; do + expect 0 chflags ${n0} ${flag} + expect ${flag} stat ${n0} flags + [ "${flag}" = "SF_APPEND" ] && todo FreeBSD:ZFS "Renaming a file protected by SF_APPEND should return EPERM." + expect EPERM rename ${n0}/${n1} ${n2} + [ "${flag}" = "SF_APPEND" ] && todo FreeBSD:ZFS "Renaming a file protected by SF_APPEND should return EPERM." + expect ENOENT rename ${n2} ${n0}/${n1} +done +expect 0 chflags ${n0} none +expect 0 unlink ${n0}/${n1} + +expect 0 bind ${n0}/${n1} +for flag in ${flags1}; do + expect 0 chflags ${n0} ${flag} + expect ${flag} stat ${n0} flags + [ "${flag}" = "SF_APPEND" ] && todo FreeBSD:ZFS "Renaming a file protected by SF_APPEND should return EPERM." + expect EPERM rename ${n0}/${n1} ${n2} + [ "${flag}" = "SF_APPEND" ] && todo FreeBSD:ZFS "Renaming a file protected by SF_APPEND should return EPERM." + expect ENOENT rename ${n2} ${n0}/${n1} done expect 0 chflags ${n0} none expect 0 unlink ${n0}/${n1} expect 0 symlink ${n2} ${n0}/${n1} -for flag in SF_IMMUTABLE UF_IMMUTABLE SF_APPEND UF_APPEND; do +for flag in ${flags1}; do expect 0 chflags ${n0} ${flag} expect ${flag} stat ${n0} flags + [ "${flag}" = "SF_APPEND" ] && todo FreeBSD:ZFS "Renaming a file protected by SF_APPEND should return EPERM." expect EPERM rename ${n0}/${n1} ${n2} + [ "${flag}" = "SF_APPEND" ] && todo FreeBSD:ZFS "Renaming a file protected by SF_APPEND should return EPERM." + expect ENOENT rename ${n2} ${n0}/${n1} done expect 0 chflags ${n0} none expect 0 unlink ${n0}/${n1} expect 0 create ${n0}/${n1} 0644 -for flag in SF_NOUNLINK UF_NOUNLINK; do +for flag in ${flags2}; do expect 0 chflags ${n0} ${flag} expect ${flag} stat ${n0} flags expect 0 rename ${n0}/${n1} ${n2} @@ -63,7 +112,7 @@ expect 0 chflags ${n0} none expect 0 unlink ${n0}/${n1} expect 0 mkdir ${n0}/${n1} 0755 -for flag in SF_NOUNLINK UF_NOUNLINK; do +for flag in ${flags2}; do expect 0 chflags ${n0} ${flag} expect ${flag} stat ${n0} flags expect 0 rename ${n0}/${n1} ${n2} @@ -73,7 +122,27 @@ expect 0 chflags ${n0} none expect 0 rmdir ${n0}/${n1} expect 0 mkfifo ${n0}/${n1} 0644 -for flag in SF_NOUNLINK UF_NOUNLINK; do +for flag in ${flags2}; do + expect 0 chflags ${n0} ${flag} + expect ${flag} stat ${n0} flags + expect 0 rename ${n0}/${n1} ${n2} + expect 0 rename ${n2} ${n0}/${n1} +done +expect 0 chflags ${n0} none +expect 0 unlink ${n0}/${n1} + +expect 0 mknod ${n0}/${n1} c 0644 1 2 +for flag in ${flags2}; do + expect 0 chflags ${n0} ${flag} + expect ${flag} stat ${n0} flags + expect 0 rename ${n0}/${n1} ${n2} + expect 0 rename ${n2} ${n0}/${n1} +done +expect 0 chflags ${n0} none +expect 0 unlink ${n0}/${n1} + +expect 0 bind ${n0}/${n1} +for flag in ${flags2}; do expect 0 chflags ${n0} ${flag} expect ${flag} stat ${n0} flags expect 0 rename ${n0}/${n1} ${n2} @@ -83,7 +152,7 @@ expect 0 chflags ${n0} none expect 0 unlink ${n0}/${n1} expect 0 symlink ${n2} ${n0}/${n1} -for flag in SF_NOUNLINK UF_NOUNLINK; do +for flag in ${flags2}; do expect 0 chflags ${n0} ${flag} expect ${flag} stat ${n0} flags expect 0 rename ${n0}/${n1} ${n2} |