]> CyberLeo.Net >> Repos - FreeBSD/FreeBSD.git/blob - contrib/pjdfstest/tests/open/09.t
MFV r350080:
[FreeBSD/FreeBSD.git] / contrib / pjdfstest / tests / open / 09.t
1 #!/bin/sh
2 # vim: filetype=sh noexpandtab ts=8 sw=8
3 # $FreeBSD: head/tools/regression/pjdfstest/tests/open/09.t 211352 2010-08-15 21:24:17Z pjd $
4
5 desc="O_CREAT is specified, the file does not exist, and the directory in which it is to be created has its immutable flag set"
6
7 dir=`dirname $0`
8 . ${dir}/../misc.sh
9
10 require chflags
11
12 case "${os}:${fs}" in
13 FreeBSD:ZFS)
14         echo "1..17"
15         ;;
16 FreeBSD:UFS)
17         echo "1..30"
18         ;;
19 *)
20         quick_exit
21 esac
22
23 n0=`namegen`
24 n1=`namegen`
25
26 expect 0 mkdir ${n0} 0755
27
28 expect 0 open ${n0}/${n1} O_RDONLY,O_CREAT 0644
29 expect 0 unlink ${n0}/${n1}
30
31 expect 0 chflags ${n0} SF_IMMUTABLE
32 expect EPERM open ${n0}/${n1} O_RDONLY,O_CREAT 0644
33 expect 0 chflags ${n0} none
34 expect 0 open ${n0}/${n1} O_RDONLY,O_CREAT 0644
35 expect 0 unlink ${n0}/${n1}
36
37 expect 0 chflags ${n0} SF_NOUNLINK
38 expect 0 open ${n0}/${n1} O_RDONLY,O_CREAT 0644
39 expect 0 chflags ${n0} none
40 expect 0 unlink ${n0}/${n1}
41
42 expect 0 chflags ${n0} SF_APPEND
43 expect 0 open ${n0}/${n1} O_RDONLY,O_CREAT 0644
44 expect 0 chflags ${n0} none
45 expect 0 unlink ${n0}/${n1}
46
47 case "${os}:${fs}" in
48 FreeBSD:UFS)
49         expect 0 chflags ${n0} UF_IMMUTABLE
50         expect EPERM open ${n0}/${n1} O_RDONLY,O_CREAT 0644
51         expect 0 chflags ${n0} none
52         expect 0 open ${n0}/${n1} O_RDONLY,O_CREAT 0644
53         expect 0 unlink ${n0}/${n1}
54
55         expect 0 chflags ${n0} UF_NOUNLINK
56         expect 0 symlink test ${n0}/${n1}
57         expect 0 chflags ${n0} none
58         expect 0 unlink ${n0}/${n1}
59
60         expect 0 chflags ${n0} UF_APPEND
61         expect 0 open ${n0}/${n1} O_RDONLY,O_CREAT 0644
62         expect 0 chflags ${n0} none
63         expect 0 unlink ${n0}/${n1}
64         ;;
65 esac
66
67 expect 0 rmdir ${n0}