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