08.t revision 302408
1272343Sngie#!/bin/sh
2272343Sngie# $FreeBSD: head/tools/regression/pjdfstest/tests/truncate/08.t 211352 2010-08-15 21:24:17Z pjd $
3272343Sngie
4272343Sngiedesc="truncate returns EPERM if the named file has its immutable or append-only flag set"
5272343Sngie
6272343Sngiedir=`dirname $0`
7272343Sngie. ${dir}/../misc.sh
8272343Sngie
9272343Sngierequire chflags
10272343Sngie
11272343Sngiecase "${os}:${fs}" in
12272343SngieFreeBSD:ZFS)
13272343Sngie	echo "1..22"
14272343Sngie	;;
15272343SngieFreeBSD:UFS)
16272343Sngie	echo "1..44"
17272343Sngie	;;
18272343Sngie*)
19272343Sngie	quick_exit
20272343Sngieesac
21272343Sngie
22272343Sngien0=`namegen`
23272343Sngie
24272343Sngieexpect 0 create ${n0} 0644
25272343Sngieexpect 0 chflags ${n0} SF_IMMUTABLE
26272343Sngieexpect EPERM truncate ${n0} 123
27272343Sngieexpect 0 stat ${n0} size
28272343Sngieexpect 0 chflags ${n0} none
29272343Sngieexpect 0 truncate ${n0} 123
30272343Sngieexpect 123 stat ${n0} size
31272343Sngieexpect 0 unlink ${n0}
32272343Sngie
33272343Sngieexpect 0 create ${n0} 0644
34272343Sngieexpect 0 chflags ${n0} SF_NOUNLINK
35272343Sngieexpect 0 truncate ${n0} 123
36272343Sngieexpect 123 stat ${n0} size
37272343Sngieexpect 0 chflags ${n0} none
38272343Sngieexpect 0 unlink ${n0}
39272343Sngie
40272343Sngieexpect 0 create ${n0} 0644
41272343Sngieexpect 0 chflags ${n0} SF_APPEND
42272343Sngietodo FreeBSD:ZFS "Truncating a file protected by SF_APPEND should return EPERM."
43272343Sngieexpect EPERM truncate ${n0} 123
44272343Sngietodo FreeBSD:ZFS "Truncating a file protected by SF_APPEND should return EPERM."
45272343Sngieexpect 0 stat ${n0} size
46272343Sngieexpect 0 chflags ${n0} none
47272343Sngieexpect 0 truncate ${n0} 123
48272343Sngieexpect 123 stat ${n0} size
49272343Sngieexpect 0 unlink ${n0}
50272343Sngie
51272343Sngiecase "${os}:${fs}" in
52272343SngieFreeBSD:UFS)
53272343Sngie	expect 0 create ${n0} 0644
54272343Sngie	expect 0 chflags ${n0} UF_IMMUTABLE
55272343Sngie	expect EPERM truncate ${n0} 123
56272343Sngie	expect 0 stat ${n0} size
57272343Sngie	expect 0 chflags ${n0} none
58272343Sngie	expect 0 truncate ${n0} 123
59272343Sngie	expect 123 stat ${n0} size
60272343Sngie	expect 0 unlink ${n0}
61272343Sngie
62272343Sngie	expect 0 create ${n0} 0644
63272343Sngie	expect 0 chflags ${n0} UF_NOUNLINK
64272343Sngie	expect 0 truncate ${n0} 123
65272343Sngie	expect 123 stat ${n0} size
66272343Sngie	expect 0 chflags ${n0} none
67272343Sngie	expect 0 unlink ${n0}
68272343Sngie
69272343Sngie	expect 0 create ${n0} 0644
70272343Sngie	expect 0 chflags ${n0} UF_APPEND
71272343Sngie	expect EPERM truncate ${n0} 123
72272343Sngie	expect 0 stat ${n0} size
73272343Sngie	expect 0 chflags ${n0} none
74272343Sngie	expect 0 truncate ${n0} 123
75272343Sngie	expect 123 stat ${n0} size
76272343Sngie	expect 0 unlink ${n0}
77272343Sngie	;;
78272343Sngieesac
79272343Sngie