1#!/bin/sh
2# $FreeBSD: src/tools/regression/fstest/tests/unlink/00.t,v 1.1 2007/01/17 01:42:12 pjd Exp $
3
4desc="unlink removes regular files, symbolic links, fifos and sockets"
5
6n0=`namegen`
7n1=`namegen`
8n2=`namegen`
9
10expect 0 mkdir ${n2} 0755
11cdir=`pwd`
12cd ${n2}
13
14expect 0 create ${n0} 0644
15expect regular lstat ${n0} type
16expect 0 unlink ${n0}
17expect ENOENT lstat ${n0} type
18
19expect 0 symlink ${n1} ${n0}
20expect symlink lstat ${n0} type
21expect 0 unlink ${n0}
22expect ENOENT lstat ${n0} type
23
24expect 0 mkfifo ${n0} 0644
25expect fifo lstat ${n0} type
26expect 0 unlink ${n0}
27expect ENOENT lstat ${n0} type
28
29# TODO: sockets removal
30
31# successful unlink(2) updates ctime.
32expect 0 create ${n0} 0644
33expect 0 link ${n0} ${n1}
34ctime1=`${FSTEST} stat ${n0} ctime`
35sleep 1
36expect 0 unlink ${n1}
37ctime2=`${FSTEST} stat ${n0} ctime`
38test_check $ctime1 -lt $ctime2
39expect 0 unlink ${n0}
40
41expect 0 mkfifo ${n0} 0644
42expect 0 link ${n0} ${n1}
43ctime1=`${FSTEST} stat ${n0} ctime`
44sleep 1
45expect 0 unlink ${n1}
46ctime2=`${FSTEST} stat ${n0} ctime`
47test_check $ctime1 -lt $ctime2
48expect 0 unlink ${n0}
49
50# unsuccessful unlink(2) does not update ctime.
51expect 0 create ${n0} 0644
52ctime1=`${FSTEST} stat ${n0} ctime`
53sleep 1
54expect EACCES -u 65534 unlink ${n0}
55ctime2=`${FSTEST} stat ${n0} ctime`
56test_check $ctime1 -eq $ctime2
57expect 0 unlink ${n0}
58
59expect 0 mkfifo ${n0} 0644
60ctime1=`${FSTEST} stat ${n0} ctime`
61sleep 1
62expect EACCES -u 65534 unlink ${n0}
63ctime2=`${FSTEST} stat ${n0} ctime`
64test_check $ctime1 -eq $ctime2
65expect 0 unlink ${n0}
66
67expect 0 mkdir ${n0} 0755
68expect 0 create ${n0}/${n1} 0644
69time=`${FSTEST} stat ${n0} ctime`
70sleep 1
71expect 0 unlink ${n0}/${n1}
72mtime=`${FSTEST} stat ${n0} mtime`
73test_check $time -lt $mtime
74ctime=`${FSTEST} stat ${n0} ctime`
75test_check $time -lt $ctime
76expect 0 rmdir ${n0}
77
78expect 0 mkdir ${n0} 0755
79expect 0 mkfifo ${n0}/${n1} 0644
80time=`${FSTEST} stat ${n0} ctime`
81sleep 1
82expect 0 unlink ${n0}/${n1}
83mtime=`${FSTEST} stat ${n0} mtime`
84test_check $time -lt $mtime
85ctime=`${FSTEST} stat ${n0} ctime`
86test_check $time -lt $ctime
87expect 0 rmdir ${n0}
88
89expect 0 mkdir ${n0} 0755
90expect 0 symlink test ${n0}/${n1}
91time=`${FSTEST} stat ${n0} ctime`
92sleep 1
93expect 0 unlink ${n0}/${n1}
94mtime=`${FSTEST} stat ${n0} mtime`
95test_check $time -lt $mtime
96ctime=`${FSTEST} stat ${n0} ctime`
97test_check $time -lt $ctime
98expect 0 rmdir ${n0}
99
100expect 0 create ${n0} 0644
101expect 0 link ${n0} ${n1}
102time=`${FSTEST} stat ${n0} ctime`
103sleep 1
104expect 0 unlink ${n1}
105ctime=`${FSTEST} stat ${n0} ctime`
106test_check $time -lt $ctime
107expect 0 unlink ${n0}
108
109cd ${cdir}
110expect 0 rmdir ${n2}
111