07.t revision 166065
1169691Skan#!/bin/sh
2169691Skan# $FreeBSD: head/tools/regression/fstest/tests/rename/07.t 166065 2007-01-17 01:42:12Z pjd $
3169691Skan
4169691Skandesc="rename returns EPERM if the parent directory of the file pointed at by the 'from' argument has its immutable or append-only flag set"
5169691Skan
6169691Skandir=`dirname $0`
7169691Skan. ${dir}/../misc.sh
8169691Skan
9169691Skanrequire chflags
10169691Skan
11169691Skanecho "1..106"
12169691Skan
13169691Skann0=`namegen`
14169691Skann1=`namegen`
15169691Skann2=`namegen`
16169691Skan
17169691Skanexpect 0 mkdir ${n0} 0755
18169691Skan
19169691Skanexpect 0 create ${n0}/${n1} 0644
20169691Skanfor flag in SF_IMMUTABLE UF_IMMUTABLE SF_APPEND UF_APPEND; do
21169691Skan	expect 0 chflags ${n0} ${flag}
22169691Skan	expect ${flag} stat ${n0} flags
23169691Skan	expect EPERM rename ${n0}/${n1} ${n2}
24169691Skandone
25169691Skanexpect 0 chflags ${n0} none
26169691Skanexpect 0 unlink ${n0}/${n1}
27169691Skan
28169691Skanexpect 0 mkdir ${n0}/${n1} 0755
29169691Skanfor flag in SF_IMMUTABLE UF_IMMUTABLE SF_APPEND UF_APPEND; do
30169691Skan	expect 0 chflags ${n0} ${flag}
31169691Skan	expect ${flag} stat ${n0} flags
32169691Skan	expect EPERM rename ${n0}/${n1} ${n2}
33169691Skandone
34169691Skanexpect 0 chflags ${n0} none
35169691Skanexpect 0 rmdir ${n0}/${n1}
36169691Skan
37169691Skanexpect 0 mkfifo ${n0}/${n1} 0644
38169691Skanfor flag in SF_IMMUTABLE UF_IMMUTABLE SF_APPEND UF_APPEND; do
39169691Skan	expect 0 chflags ${n0} ${flag}
40169691Skan	expect ${flag} stat ${n0} flags
41169691Skan	expect EPERM rename ${n0}/${n1} ${n2}
42169691Skandone
43169691Skanexpect 0 chflags ${n0} none
44169691Skanexpect 0 unlink ${n0}/${n1}
45169691Skan
46169691Skanexpect 0 symlink ${n2} ${n0}/${n1}
47169691Skanfor flag in SF_IMMUTABLE UF_IMMUTABLE SF_APPEND UF_APPEND; do
48169691Skan	expect 0 chflags ${n0} ${flag}
49169691Skan	expect ${flag} stat ${n0} flags
50169691Skan	expect EPERM rename ${n0}/${n1} ${n2}
51169691Skandone
52169691Skanexpect 0 chflags ${n0} none
53169691Skanexpect 0 unlink ${n0}/${n1}
54169691Skan
55169691Skanexpect 0 create ${n0}/${n1} 0644
56169691Skanfor flag in SF_NOUNLINK UF_NOUNLINK; do
57169691Skan	expect 0 chflags ${n0} ${flag}
58169691Skan	expect ${flag} stat ${n0} flags
59169691Skan	expect 0 rename ${n0}/${n1} ${n2}
60169691Skan	expect 0 rename ${n2} ${n0}/${n1}
61169691Skandone
62169691Skanexpect 0 chflags ${n0} none
63169691Skanexpect 0 unlink ${n0}/${n1}
64169691Skan
65169691Skanexpect 0 mkdir ${n0}/${n1} 0755
66169691Skanfor flag in SF_NOUNLINK UF_NOUNLINK; do
67169691Skan	expect 0 chflags ${n0} ${flag}
68169691Skan	expect ${flag} stat ${n0} flags
69169691Skan	expect 0 rename ${n0}/${n1} ${n2}
70169691Skan	expect 0 rename ${n2} ${n0}/${n1}
71169691Skandone
72169691Skanexpect 0 chflags ${n0} none
73169691Skanexpect 0 rmdir ${n0}/${n1}
74169691Skan
75169691Skanexpect 0 mkfifo ${n0}/${n1} 0644
76169691Skanfor flag in SF_NOUNLINK UF_NOUNLINK; do
77169691Skan	expect 0 chflags ${n0} ${flag}
78169691Skan	expect ${flag} stat ${n0} flags
79169691Skan	expect 0 rename ${n0}/${n1} ${n2}
80169691Skan	expect 0 rename ${n2} ${n0}/${n1}
81169691Skandone
82169691Skanexpect 0 chflags ${n0} none
83169691Skanexpect 0 unlink ${n0}/${n1}
84169691Skan
85169691Skanexpect 0 symlink ${n2} ${n0}/${n1}
86169691Skanfor flag in SF_NOUNLINK UF_NOUNLINK; do
87169691Skan	expect 0 chflags ${n0} ${flag}
88169691Skan	expect ${flag} stat ${n0} flags
89169691Skan	expect 0 rename ${n0}/${n1} ${n2}
90169691Skan	expect 0 rename ${n2} ${n0}/${n1}
91169691Skandone
92169691Skanexpect 0 chflags ${n0} none
93169691Skanexpect 0 unlink ${n0}/${n1}
94169691Skan
95expect 0 rmdir ${n0}
96