Fix bin/dd/dd2_tests:seek_overflow on UFS and TMPFS

Split the postive and negative parts into separate test cases.  The positive
test case can only run on ZFS, because only ZFS supports files that large.

PR:		219757
Reported by:	ngie
MFC after:	18 days
X-MFC-with:	319339
This commit is contained in:
Alan Somers 2017-06-03 18:29:18 +00:00
parent 649c9a25d5
commit 07c19c27d3

View File

@ -26,6 +26,27 @@
# $FreeBSD$
atf_test_case max_seek
max_seek_head()
{
atf_set "descr" "dd(1) can seek by the maximum amount"
}
max_seek_body()
{
case `df -T . | tail -n 1 | cut -wf 2` in
"ufs")
atf_skip "UFS's maximum file size is too small";;
"zfs") ;; # ZFS is fine
"tmpfs")
atf_skip "tmpfs can't create arbitrarily large spare files";;
*) atf_skip "Unknown file system";;
esac
touch f.in
seek=`echo "2^63 / 4096 - 1" | bc`
atf_check -s exit:0 -e ignore dd if=f.in of=f.out bs=4096 seek=$seek
}
atf_test_case seek_overflow
seek_overflow_head()
{
@ -33,14 +54,7 @@ seek_overflow_head()
}
seek_overflow_body()
{
atf_expect_fail "fails with 'dd: truncating f.out: File too large' - bug 219757"
touch f.in
# Positive tests
seek=`echo "2^63 / 4096 - 1" | bc`
atf_check -s exit:0 -e ignore dd if=f.in of=f.out bs=4096 seek=$seek
# Negative tests
seek=`echo "2^63 / 4096" | bc`
atf_check -s not-exit:0 -e match:"seek offsets cannot be larger than" \
dd if=f.in of=f.out bs=4096 seek=$seek
@ -50,5 +64,6 @@ seek_overflow_body()
atf_init_test_cases()
{
atf_add_test_case seek_overflow
atf_add_test_case max_seek
atf_add_test_case seek_overflow
}