07.t revision 210984
1166065Spjd#!/bin/sh 2166065Spjd# $FreeBSD: head/tools/regression/fstest/tests/rename/07.t 210984 2010-08-06 23:58:54Z pjd $ 3166065Spjd 4166065Spjddesc="rename returns EPERM if the parent directory of the file pointed at by the 'from' argument has its immutable or append-only flag set" 5166065Spjd 6166065Spjddir=`dirname $0` 7166065Spjd. ${dir}/../misc.sh 8166065Spjd 9166065Spjdrequire chflags 10166065Spjd 11210984Spjdcase "${os}:${fs}" in 12210984SpjdFreeBSD:ZFS) 13210984Spjd flags1="SF_IMMUTABLE SF_APPEND" 14210984Spjd flags2="SF_NOUNLINK" 15210984Spjd echo "1..110" 16210984Spjd ;; 17210984SpjdFreeBSD:UFS) 18210984Spjd flags1="SF_IMMUTABLE SF_APPEND UF_IMMUTABLE UF_APPEND" 19210984Spjd flags2="SF_NOUNLINK UF_NOUNLINK" 20210984Spjd echo "1..182" 21210984Spjd ;; 22210984Spjd*) 23210984Spjd quick_exit 24210984Spjdesac 25166065Spjd 26166065Spjdn0=`namegen` 27166065Spjdn1=`namegen` 28166065Spjdn2=`namegen` 29166065Spjd 30166065Spjdexpect 0 mkdir ${n0} 0755 31166065Spjd 32166065Spjdexpect 0 create ${n0}/${n1} 0644 33210984Spjdfor flag in ${flags1}; do 34166065Spjd expect 0 chflags ${n0} ${flag} 35166065Spjd expect ${flag} stat ${n0} flags 36210984Spjd [ "${flag}" = "SF_APPEND" ] && todo FreeBSD:ZFS "Renaming a file protected by SF_APPEND should return EPERM." 37166065Spjd expect EPERM rename ${n0}/${n1} ${n2} 38210984Spjd [ "${flag}" = "SF_APPEND" ] && todo FreeBSD:ZFS "Renaming a file protected by SF_APPEND should return EPERM." 39210984Spjd expect ENOENT rename ${n2} ${n0}/${n1} 40166065Spjddone 41166065Spjdexpect 0 chflags ${n0} none 42166065Spjdexpect 0 unlink ${n0}/${n1} 43166065Spjd 44166065Spjdexpect 0 mkdir ${n0}/${n1} 0755 45210984Spjdfor flag in ${flags1}; do 46166065Spjd expect 0 chflags ${n0} ${flag} 47166065Spjd expect ${flag} stat ${n0} flags 48210984Spjd [ "${flag}" = "SF_APPEND" ] && todo FreeBSD:ZFS "Renaming a file protected by SF_APPEND should return EPERM." 49166065Spjd expect EPERM rename ${n0}/${n1} ${n2} 50210984Spjd [ "${flag}" = "SF_APPEND" ] && todo FreeBSD:ZFS "Renaming a file protected by SF_APPEND should return EPERM." 51210984Spjd expect ENOENT rename ${n2} ${n0}/${n1} 52166065Spjddone 53166065Spjdexpect 0 chflags ${n0} none 54166065Spjdexpect 0 rmdir ${n0}/${n1} 55166065Spjd 56166065Spjdexpect 0 mkfifo ${n0}/${n1} 0644 57210984Spjdfor flag in ${flags1}; do 58166065Spjd expect 0 chflags ${n0} ${flag} 59166065Spjd expect ${flag} stat ${n0} flags 60210984Spjd [ "${flag}" = "SF_APPEND" ] && todo FreeBSD:ZFS "Renaming a file protected by SF_APPEND should return EPERM." 61166065Spjd expect EPERM rename ${n0}/${n1} ${n2} 62210984Spjd [ "${flag}" = "SF_APPEND" ] && todo FreeBSD:ZFS "Renaming a file protected by SF_APPEND should return EPERM." 63210984Spjd expect ENOENT rename ${n2} ${n0}/${n1} 64166065Spjddone 65166065Spjdexpect 0 chflags ${n0} none 66166065Spjdexpect 0 unlink ${n0}/${n1} 67166065Spjd 68210984Spjdexpect 0 mknod ${n0}/${n1} c 0644 1 2 69210984Spjdfor flag in ${flags1}; do 70210984Spjd expect 0 chflags ${n0} ${flag} 71210984Spjd expect ${flag} stat ${n0} flags 72210984Spjd [ "${flag}" = "SF_APPEND" ] && todo FreeBSD:ZFS "Renaming a file protected by SF_APPEND should return EPERM." 73210984Spjd expect EPERM rename ${n0}/${n1} ${n2} 74210984Spjd [ "${flag}" = "SF_APPEND" ] && todo FreeBSD:ZFS "Renaming a file protected by SF_APPEND should return EPERM." 75210984Spjd expect ENOENT rename ${n2} ${n0}/${n1} 76210984Spjddone 77210984Spjdexpect 0 chflags ${n0} none 78210984Spjdexpect 0 unlink ${n0}/${n1} 79210984Spjd 80210984Spjdexpect 0 bind ${n0}/${n1} 81210984Spjdfor flag in ${flags1}; do 82210984Spjd expect 0 chflags ${n0} ${flag} 83210984Spjd expect ${flag} stat ${n0} flags 84210984Spjd [ "${flag}" = "SF_APPEND" ] && todo FreeBSD:ZFS "Renaming a file protected by SF_APPEND should return EPERM." 85210984Spjd expect EPERM rename ${n0}/${n1} ${n2} 86210984Spjd [ "${flag}" = "SF_APPEND" ] && todo FreeBSD:ZFS "Renaming a file protected by SF_APPEND should return EPERM." 87210984Spjd expect ENOENT rename ${n2} ${n0}/${n1} 88210984Spjddone 89210984Spjdexpect 0 chflags ${n0} none 90210984Spjdexpect 0 unlink ${n0}/${n1} 91210984Spjd 92166065Spjdexpect 0 symlink ${n2} ${n0}/${n1} 93210984Spjdfor flag in ${flags1}; do 94166065Spjd expect 0 chflags ${n0} ${flag} 95166065Spjd expect ${flag} stat ${n0} flags 96210984Spjd [ "${flag}" = "SF_APPEND" ] && todo FreeBSD:ZFS "Renaming a file protected by SF_APPEND should return EPERM." 97166065Spjd expect EPERM rename ${n0}/${n1} ${n2} 98210984Spjd [ "${flag}" = "SF_APPEND" ] && todo FreeBSD:ZFS "Renaming a file protected by SF_APPEND should return EPERM." 99210984Spjd expect ENOENT rename ${n2} ${n0}/${n1} 100166065Spjddone 101166065Spjdexpect 0 chflags ${n0} none 102166065Spjdexpect 0 unlink ${n0}/${n1} 103166065Spjd 104166065Spjdexpect 0 create ${n0}/${n1} 0644 105210984Spjdfor flag in ${flags2}; do 106166065Spjd expect 0 chflags ${n0} ${flag} 107166065Spjd expect ${flag} stat ${n0} flags 108166065Spjd expect 0 rename ${n0}/${n1} ${n2} 109166065Spjd expect 0 rename ${n2} ${n0}/${n1} 110166065Spjddone 111166065Spjdexpect 0 chflags ${n0} none 112166065Spjdexpect 0 unlink ${n0}/${n1} 113166065Spjd 114166065Spjdexpect 0 mkdir ${n0}/${n1} 0755 115210984Spjdfor flag in ${flags2}; do 116166065Spjd expect 0 chflags ${n0} ${flag} 117166065Spjd expect ${flag} stat ${n0} flags 118166065Spjd expect 0 rename ${n0}/${n1} ${n2} 119166065Spjd expect 0 rename ${n2} ${n0}/${n1} 120166065Spjddone 121166065Spjdexpect 0 chflags ${n0} none 122166065Spjdexpect 0 rmdir ${n0}/${n1} 123166065Spjd 124166065Spjdexpect 0 mkfifo ${n0}/${n1} 0644 125210984Spjdfor flag in ${flags2}; do 126166065Spjd expect 0 chflags ${n0} ${flag} 127166065Spjd expect ${flag} stat ${n0} flags 128166065Spjd expect 0 rename ${n0}/${n1} ${n2} 129166065Spjd expect 0 rename ${n2} ${n0}/${n1} 130166065Spjddone 131166065Spjdexpect 0 chflags ${n0} none 132166065Spjdexpect 0 unlink ${n0}/${n1} 133166065Spjd 134210984Spjdexpect 0 mknod ${n0}/${n1} c 0644 1 2 135210984Spjdfor flag in ${flags2}; do 136210984Spjd expect 0 chflags ${n0} ${flag} 137210984Spjd expect ${flag} stat ${n0} flags 138210984Spjd expect 0 rename ${n0}/${n1} ${n2} 139210984Spjd expect 0 rename ${n2} ${n0}/${n1} 140210984Spjddone 141210984Spjdexpect 0 chflags ${n0} none 142210984Spjdexpect 0 unlink ${n0}/${n1} 143210984Spjd 144210984Spjdexpect 0 bind ${n0}/${n1} 145210984Spjdfor flag in ${flags2}; do 146210984Spjd expect 0 chflags ${n0} ${flag} 147210984Spjd expect ${flag} stat ${n0} flags 148210984Spjd expect 0 rename ${n0}/${n1} ${n2} 149210984Spjd expect 0 rename ${n2} ${n0}/${n1} 150210984Spjddone 151210984Spjdexpect 0 chflags ${n0} none 152210984Spjdexpect 0 unlink ${n0}/${n1} 153210984Spjd 154166065Spjdexpect 0 symlink ${n2} ${n0}/${n1} 155210984Spjdfor flag in ${flags2}; do 156166065Spjd expect 0 chflags ${n0} ${flag} 157166065Spjd expect ${flag} stat ${n0} flags 158166065Spjd expect 0 rename ${n0}/${n1} ${n2} 159166065Spjd expect 0 rename ${n2} ${n0}/${n1} 160166065Spjddone 161166065Spjdexpect 0 chflags ${n0} none 162166065Spjdexpect 0 unlink ${n0}/${n1} 163166065Spjd 164166065Spjdexpect 0 rmdir ${n0} 165