]> CyberLeo.Net >> Repos - FreeBSD/releng/8.1.git/blob - tools/regression/fstest/tests/rename/00.t
Copy stable/8 to releng/8.1 in preparation for 8.1-RC1.
[FreeBSD/releng/8.1.git] / tools / regression / fstest / tests / rename / 00.t
1 #!/bin/sh
2 # $FreeBSD$
3
4 desc="rename changes file name"
5
6 dir=`dirname $0`
7 . ${dir}/../misc.sh
8
9 echo "1..79"
10
11 n0=`namegen`
12 n1=`namegen`
13 n2=`namegen`
14 n3=`namegen`
15
16 expect 0 mkdir ${n3} 0755
17 cdir=`pwd`
18 cd ${n3}
19
20 expect 0 create ${n0} 0644
21 expect regular,0644,1 lstat ${n0} type,mode,nlink
22 inode=`${fstest} lstat ${n0} inode`
23 expect 0 rename ${n0} ${n1}
24 expect ENOENT lstat ${n0} type,mode,nlink
25 expect regular,${inode},0644,1 lstat ${n1} type,inode,mode,nlink
26 expect 0 link ${n1} ${n0}
27 expect regular,${inode},0644,2 lstat ${n0} type,inode,mode,nlink
28 expect regular,${inode},0644,2 lstat ${n1} type,inode,mode,nlink
29 expect 0 rename ${n1} ${n2}
30 expect regular,${inode},0644,2 lstat ${n0} type,inode,mode,nlink
31 expect ENOENT lstat ${n1} type,mode,nlink
32 expect regular,${inode},0644,2 lstat ${n2} type,inode,mode,nlink
33 expect 0 unlink ${n0}
34 expect 0 unlink ${n2}
35
36 expect 0 mkdir ${n0} 0755
37 expect dir,0755 lstat ${n0} type,mode
38 inode=`${fstest} lstat ${n0} inode`
39 expect 0 rename ${n0} ${n1}
40 expect ENOENT lstat ${n0} type,mode
41 expect dir,${inode},0755 lstat ${n1} type,inode,mode
42 expect 0 rmdir ${n1}
43
44 expect 0 mkfifo ${n0} 0644
45 expect fifo,0644,1 lstat ${n0} type,mode,nlink
46 inode=`${fstest} lstat ${n0} inode`
47 expect 0 rename ${n0} ${n1}
48 expect ENOENT lstat ${n0} type,mode,nlink
49 expect fifo,${inode},0644,1 lstat ${n1} type,inode,mode,nlink
50 expect 0 link ${n1} ${n0}
51 expect fifo,${inode},0644,2 lstat ${n0} type,inode,mode,nlink
52 expect fifo,${inode},0644,2 lstat ${n1} type,inode,mode,nlink
53 expect 0 rename ${n1} ${n2}
54 expect fifo,${inode},0644,2 lstat ${n0} type,inode,mode,nlink
55 expect ENOENT lstat ${n1} type,mode,nlink
56 expect fifo,${inode},0644,2 lstat ${n2} type,inode,mode,nlink
57 expect 0 unlink ${n0}
58 expect 0 unlink ${n2}
59
60 expect 0 create ${n0} 0644
61 rinode=`${fstest} lstat ${n0} inode`
62 expect regular,0644 lstat ${n0} type,mode
63 expect 0 symlink ${n0} ${n1}
64 sinode=`${fstest} lstat ${n1} inode`
65 expect regular,${rinode},0644 stat ${n1} type,inode,mode
66 expect symlink,${sinode} lstat ${n1} type,inode
67 expect 0 rename ${n1} ${n2}
68 expect regular,${rinode},0644 stat ${n0} type,inode,mode
69 expect ENOENT lstat ${n1} type,mode
70 expect symlink,${sinode} lstat ${n2} type,inode
71 expect 0 unlink ${n0}
72 expect 0 unlink ${n2}
73
74 # successful rename(2) updates ctime.
75 expect 0 create ${n0} 0644
76 ctime1=`${fstest} stat ${n0} ctime`
77 sleep 1
78 expect 0 rename ${n0} ${n1}
79 ctime2=`${fstest} stat ${n1} ctime`
80 test_check $ctime1 -lt $ctime2
81 expect 0 unlink ${n1}
82
83 expect 0 mkdir ${n0} 0755
84 ctime1=`${fstest} stat ${n0} ctime`
85 sleep 1
86 expect 0 rename ${n0} ${n1}
87 ctime2=`${fstest} stat ${n1} ctime`
88 test_check $ctime1 -lt $ctime2
89 expect 0 rmdir ${n1}
90
91 expect 0 mkfifo ${n0} 0644
92 ctime1=`${fstest} stat ${n0} ctime`
93 sleep 1
94 expect 0 rename ${n0} ${n1}
95 ctime2=`${fstest} stat ${n1} ctime`
96 test_check $ctime1 -lt $ctime2
97 expect 0 unlink ${n1}
98
99 expect 0 symlink ${n2} ${n0}
100 ctime1=`${fstest} lstat ${n0} ctime`
101 sleep 1
102 expect 0 rename ${n0} ${n1}
103 ctime2=`${fstest} lstat ${n1} ctime`
104 test_check $ctime1 -lt $ctime2
105 expect 0 unlink ${n1}
106
107 # unsuccessful link(2) does not update ctime.
108 expect 0 create ${n0} 0644
109 ctime1=`${fstest} stat ${n0} ctime`
110 sleep 1
111 expect EACCES -u 65534 rename ${n0} ${n1}
112 ctime2=`${fstest} stat ${n0} ctime`
113 test_check $ctime1 -eq $ctime2
114 expect 0 unlink ${n0}
115
116 expect 0 mkdir ${n0} 0755
117 ctime1=`${fstest} stat ${n0} ctime`
118 sleep 1
119 expect EACCES -u 65534 rename ${n0} ${n1}
120 ctime2=`${fstest} stat ${n0} ctime`
121 test_check $ctime1 -eq $ctime2
122 expect 0 rmdir ${n0}
123
124 expect 0 mkfifo ${n0} 0644
125 ctime1=`${fstest} stat ${n0} ctime`
126 sleep 1
127 expect EACCES -u 65534 rename ${n0} ${n1}
128 ctime2=`${fstest} stat ${n0} ctime`
129 test_check $ctime1 -eq $ctime2
130 expect 0 unlink ${n0}
131
132 expect 0 symlink ${n2} ${n0}
133 ctime1=`${fstest} lstat ${n0} ctime`
134 sleep 1
135 expect EACCES -u 65534 rename ${n0} ${n1}
136 ctime2=`${fstest} lstat ${n0} ctime`
137 test_check $ctime1 -eq $ctime2
138 expect 0 unlink ${n0}
139
140 cd ${cdir}
141 expect 0 rmdir ${n3}