]> CyberLeo.Net >> Repos - FreeBSD/releng/10.0.git/blob - tools/regression/pjdfstest/tests/truncate/00.t
- Copy stable/10 (r259064) to releng/10.0 as part of the
[FreeBSD/releng/10.0.git] / tools / regression / pjdfstest / tests / truncate / 00.t
1 #!/bin/sh
2 # $FreeBSD$
3
4 desc="truncate descrease/increase file size"
5
6 dir=`dirname $0`
7 . ${dir}/../misc.sh
8
9 echo "1..21"
10
11 n0=`namegen`
12 n1=`namegen`
13
14 expect 0 mkdir ${n1} 0755
15 cdir=`pwd`
16 cd ${n1}
17
18 expect 0 create ${n0} 0644
19 expect 0 truncate ${n0} 1234567
20 expect 1234567 lstat ${n0} size
21 expect 0 truncate ${n0} 567
22 expect 567 lstat ${n0} size
23 expect 0 unlink ${n0}
24
25 dd if=/dev/random of=${n0} bs=12345 count=1 >/dev/null 2>&1
26 expect 0 truncate ${n0} 23456
27 expect 23456 lstat ${n0} size
28 expect 0 truncate ${n0} 1
29 expect 1 lstat ${n0} size
30 expect 0 unlink ${n0}
31
32 # successful truncate(2) updates ctime.
33 expect 0 create ${n0} 0644
34 ctime1=`${fstest} stat ${n0} ctime`
35 sleep 1
36 expect 0 truncate ${n0} 123
37 ctime2=`${fstest} stat ${n0} ctime`
38 test_check $ctime1 -lt $ctime2
39 expect 0 unlink ${n0}
40
41 # unsuccessful truncate(2) does not update ctime.
42 expect 0 create ${n0} 0644
43 ctime1=`${fstest} stat ${n0} ctime`
44 sleep 1
45 expect EACCES -u 65534 truncate ${n0} 123
46 ctime2=`${fstest} stat ${n0} ctime`
47 test_check $ctime1 -eq $ctime2
48 expect 0 unlink ${n0}
49
50 cd ${cdir}
51 expect 0 rmdir ${n1}