summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorpjd <pjd@FreeBSD.org>2011-03-09 23:11:30 +0000
committerpjd <pjd@FreeBSD.org>2011-03-09 23:11:30 +0000
commit62b96f668ab7705702d81fcefc0a1732d1c37fb8 (patch)
tree3d3e022154c2a88f4774a858a57819e6b7ebdae4
parentcf63dbabf1283eaba52766e12ab0d7be3c38a1c4 (diff)
downloadFreeBSD-src-62b96f668ab7705702d81fcefc0a1732d1c37fb8.zip
FreeBSD-src-62b96f668ab7705702d81fcefc0a1732d1c37fb8.tar.gz
Few initial ftruncate(2) tests. One of them covers stand/154873.
PR: stand/154873
-rw-r--r--tools/regression/pjdfstest/tests/ftruncate/00.t58
1 files changed, 58 insertions, 0 deletions
diff --git a/tools/regression/pjdfstest/tests/ftruncate/00.t b/tools/regression/pjdfstest/tests/ftruncate/00.t
new file mode 100644
index 0000000..9028a29
--- /dev/null
+++ b/tools/regression/pjdfstest/tests/ftruncate/00.t
@@ -0,0 +1,58 @@
+#!/bin/sh
+# $FreeBSD$
+
+desc="ftruncate descrease/increase file size"
+
+dir=`dirname $0`
+. ${dir}/../misc.sh
+
+echo "1..21"
+
+n0=`namegen`
+n1=`namegen`
+
+expect 0 mkdir ${n1} 0755
+cdir=`pwd`
+cd ${n1}
+
+expect 0 create ${n0} 0644
+expect 0 open ${n0} O_RDWR : ftruncate 0 1234567
+expect 1234567 lstat ${n0} size
+expect 0 open ${n0} O_WRONLY : ftruncate 0 567
+expect 567 lstat ${n0} size
+expect 0 unlink ${n0}
+
+dd if=/dev/random of=${n0} bs=12345 count=1 >/dev/null 2>&1
+expect 0 open ${n0} O_RDWR : ftruncate 0 23456
+expect 23456 lstat ${n0} size
+expect 0 open ${n0} O_WRONLY : ftruncate 0 1
+expect 1 lstat ${n0} size
+expect 0 unlink ${n0}
+
+# successful ftruncate(2) updates ctime.
+expect 0 create ${n0} 0644
+ctime1=`${fstest} stat ${n0} ctime`
+sleep 1
+expect 0 open ${n0} O_RDWR : ftruncate 0 123
+ctime2=`${fstest} stat ${n0} ctime`
+test_check $ctime1 -lt $ctime2
+expect 0 unlink ${n0}
+
+# unsuccessful ftruncate(2) does not update ctime.
+expect 0 create ${n0} 0644
+ctime1=`${fstest} stat ${n0} ctime`
+sleep 1
+expect EINVAL -u 65534 open ${n0} O_RDONLY : ftruncate 0 123
+ctime2=`${fstest} stat ${n0} ctime`
+test_check $ctime1 -eq $ctime2
+expect 0 unlink ${n0}
+
+# third argument should not affect permission.
+expect 0 open ${n0} O_CREAT,O_RDWR 0 : ftruncate 0 0
+expect 0 unlink ${n0}
+expect 0 chmod . 0777
+expect 0 -u 65534 open ${n0} O_CREAT,O_RDWR 0 : ftruncate 0 0
+expect 0 unlink ${n0}
+
+cd ${cdir}
+expect 0 rmdir ${n1}
OpenPOWER on IntegriCloud