07.t revision 211156
1166065Spjd#!/bin/sh 2166065Spjd# $FreeBSD: head/tools/regression/fstest/tests/rename/07.t 211156 2010-08-10 22:57:43Z 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" 15211156Spjd echo "1..128" 16210984Spjd ;; 17210984SpjdFreeBSD:UFS) 18210984Spjd flags1="SF_IMMUTABLE SF_APPEND UF_IMMUTABLE UF_APPEND" 19210984Spjd flags2="SF_NOUNLINK UF_NOUNLINK" 20211156Spjd echo "1..212" 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 68211156Spjdexpect 0 mknod ${n0}/${n1} b 0644 1 2 69211156Spjdfor flag in ${flags1}; do 70211156Spjd expect 0 chflags ${n0} ${flag} 71211156Spjd expect ${flag} stat ${n0} flags 72211156Spjd [ "${flag}" = "SF_APPEND" ] && todo FreeBSD:ZFS "Renaming a file protected by SF_APPEND should return EPERM." 73211156Spjd expect EPERM rename ${n0}/${n1} ${n2} 74211156Spjd [ "${flag}" = "SF_APPEND" ] && todo FreeBSD:ZFS "Renaming a file protected by SF_APPEND should return EPERM." 75211156Spjd expect ENOENT rename ${n2} ${n0}/${n1} 76211156Spjddone 77211156Spjdexpect 0 chflags ${n0} none 78211156Spjdexpect 0 unlink ${n0}/${n1} 79211156Spjd 80210984Spjdexpect 0 mknod ${n0}/${n1} c 0644 1 2 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 92210984Spjdexpect 0 bind ${n0}/${n1} 93210984Spjdfor flag in ${flags1}; do 94210984Spjd expect 0 chflags ${n0} ${flag} 95210984Spjd expect ${flag} stat ${n0} flags 96210984Spjd [ "${flag}" = "SF_APPEND" ] && todo FreeBSD:ZFS "Renaming a file protected by SF_APPEND should return EPERM." 97210984Spjd 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} 100210984Spjddone 101210984Spjdexpect 0 chflags ${n0} none 102210984Spjdexpect 0 unlink ${n0}/${n1} 103210984Spjd 104166065Spjdexpect 0 symlink ${n2} ${n0}/${n1} 105210984Spjdfor flag in ${flags1}; do 106166065Spjd expect 0 chflags ${n0} ${flag} 107166065Spjd expect ${flag} stat ${n0} flags 108210984Spjd [ "${flag}" = "SF_APPEND" ] && todo FreeBSD:ZFS "Renaming a file protected by SF_APPEND should return EPERM." 109166065Spjd expect EPERM rename ${n0}/${n1} ${n2} 110210984Spjd [ "${flag}" = "SF_APPEND" ] && todo FreeBSD:ZFS "Renaming a file protected by SF_APPEND should return EPERM." 111210984Spjd expect ENOENT rename ${n2} ${n0}/${n1} 112166065Spjddone 113166065Spjdexpect 0 chflags ${n0} none 114166065Spjdexpect 0 unlink ${n0}/${n1} 115166065Spjd 116166065Spjdexpect 0 create ${n0}/${n1} 0644 117210984Spjdfor flag in ${flags2}; do 118166065Spjd expect 0 chflags ${n0} ${flag} 119166065Spjd expect ${flag} stat ${n0} flags 120166065Spjd expect 0 rename ${n0}/${n1} ${n2} 121166065Spjd expect 0 rename ${n2} ${n0}/${n1} 122166065Spjddone 123166065Spjdexpect 0 chflags ${n0} none 124166065Spjdexpect 0 unlink ${n0}/${n1} 125166065Spjd 126166065Spjdexpect 0 mkdir ${n0}/${n1} 0755 127210984Spjdfor flag in ${flags2}; do 128166065Spjd expect 0 chflags ${n0} ${flag} 129166065Spjd expect ${flag} stat ${n0} flags 130166065Spjd expect 0 rename ${n0}/${n1} ${n2} 131166065Spjd expect 0 rename ${n2} ${n0}/${n1} 132166065Spjddone 133166065Spjdexpect 0 chflags ${n0} none 134166065Spjdexpect 0 rmdir ${n0}/${n1} 135166065Spjd 136166065Spjdexpect 0 mkfifo ${n0}/${n1} 0644 137210984Spjdfor flag in ${flags2}; do 138166065Spjd expect 0 chflags ${n0} ${flag} 139166065Spjd expect ${flag} stat ${n0} flags 140166065Spjd expect 0 rename ${n0}/${n1} ${n2} 141166065Spjd expect 0 rename ${n2} ${n0}/${n1} 142166065Spjddone 143166065Spjdexpect 0 chflags ${n0} none 144166065Spjdexpect 0 unlink ${n0}/${n1} 145166065Spjd 146211156Spjdexpect 0 mknod ${n0}/${n1} b 0644 1 2 147211156Spjdfor flag in ${flags2}; do 148211156Spjd expect 0 chflags ${n0} ${flag} 149211156Spjd expect ${flag} stat ${n0} flags 150211156Spjd expect 0 rename ${n0}/${n1} ${n2} 151211156Spjd expect 0 rename ${n2} ${n0}/${n1} 152211156Spjddone 153211156Spjdexpect 0 chflags ${n0} none 154211156Spjdexpect 0 unlink ${n0}/${n1} 155211156Spjd 156210984Spjdexpect 0 mknod ${n0}/${n1} c 0644 1 2 157210984Spjdfor flag in ${flags2}; do 158210984Spjd expect 0 chflags ${n0} ${flag} 159210984Spjd expect ${flag} stat ${n0} flags 160210984Spjd expect 0 rename ${n0}/${n1} ${n2} 161210984Spjd expect 0 rename ${n2} ${n0}/${n1} 162210984Spjddone 163210984Spjdexpect 0 chflags ${n0} none 164210984Spjdexpect 0 unlink ${n0}/${n1} 165210984Spjd 166210984Spjdexpect 0 bind ${n0}/${n1} 167210984Spjdfor flag in ${flags2}; do 168210984Spjd expect 0 chflags ${n0} ${flag} 169210984Spjd expect ${flag} stat ${n0} flags 170210984Spjd expect 0 rename ${n0}/${n1} ${n2} 171210984Spjd expect 0 rename ${n2} ${n0}/${n1} 172210984Spjddone 173210984Spjdexpect 0 chflags ${n0} none 174210984Spjdexpect 0 unlink ${n0}/${n1} 175210984Spjd 176166065Spjdexpect 0 symlink ${n2} ${n0}/${n1} 177210984Spjdfor flag in ${flags2}; do 178166065Spjd expect 0 chflags ${n0} ${flag} 179166065Spjd expect ${flag} stat ${n0} flags 180166065Spjd expect 0 rename ${n0}/${n1} ${n2} 181166065Spjd expect 0 rename ${n2} ${n0}/${n1} 182166065Spjddone 183166065Spjdexpect 0 chflags ${n0} none 184166065Spjdexpect 0 unlink ${n0}/${n1} 185166065Spjd 186166065Spjdexpect 0 rmdir ${n0} 187