]> CyberLeo.Net >> Repos - FreeBSD/FreeBSD.git/blob - contrib/pjdfstest/tests/ftruncate/08.t
MFV r324198: 8081 Compiler warnings in zdb
[FreeBSD/FreeBSD.git] / contrib / pjdfstest / tests / ftruncate / 08.t
1 #!/bin/sh
2 # vim: filetype=sh noexpandtab ts=8 sw=8
3 # $FreeBSD: head/tools/regression/pjdfstest/tests/truncate/08.t 211352 2010-08-15 21:24:17Z pjd $
4
5 desc="truncate returns EPERM if the named file has its immutable or append-only 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..22"
15         ;;
16 FreeBSD:UFS)
17         echo "1..44"
18         ;;
19 *)
20         quick_exit
21 esac
22
23 n0=`namegen`
24
25 expect 0 create ${n0} 0644
26 expect 0 chflags ${n0} SF_IMMUTABLE
27 expect EPERM truncate ${n0} 123
28 expect 0 stat ${n0} size
29 expect 0 chflags ${n0} none
30 expect 0 truncate ${n0} 123
31 expect 123 stat ${n0} size
32 expect 0 unlink ${n0}
33
34 expect 0 create ${n0} 0644
35 expect 0 chflags ${n0} SF_NOUNLINK
36 expect 0 truncate ${n0} 123
37 expect 123 stat ${n0} size
38 expect 0 chflags ${n0} none
39 expect 0 unlink ${n0}
40
41 expect 0 create ${n0} 0644
42 expect 0 chflags ${n0} SF_APPEND
43 todo FreeBSD:ZFS "Truncating a file protected by SF_APPEND should return EPERM."
44 expect EPERM truncate ${n0} 123
45 todo FreeBSD:ZFS "Truncating a file protected by SF_APPEND should return EPERM."
46 expect 0 stat ${n0} size
47 expect 0 chflags ${n0} none
48 expect 0 truncate ${n0} 123
49 expect 123 stat ${n0} size
50 expect 0 unlink ${n0}
51
52 case "${os}:${fs}" in
53 FreeBSD:UFS)
54         expect 0 create ${n0} 0644
55         expect 0 chflags ${n0} UF_IMMUTABLE
56         expect EPERM truncate ${n0} 123
57         expect 0 stat ${n0} size
58         expect 0 chflags ${n0} none
59         expect 0 truncate ${n0} 123
60         expect 123 stat ${n0} size
61         expect 0 unlink ${n0}
62
63         expect 0 create ${n0} 0644
64         expect 0 chflags ${n0} UF_NOUNLINK
65         expect 0 truncate ${n0} 123
66         expect 123 stat ${n0} size
67         expect 0 chflags ${n0} none
68         expect 0 unlink ${n0}
69
70         expect 0 create ${n0} 0644
71         expect 0 chflags ${n0} UF_APPEND
72         expect EPERM truncate ${n0} 123
73         expect 0 stat ${n0} size
74         expect 0 chflags ${n0} none
75         expect 0 truncate ${n0} 123
76         expect 123 stat ${n0} size
77         expect 0 unlink ${n0}
78         ;;
79 esac