cp: Add tests involving sparse files.
MFC after: 1 week Sponsored by: Klara, Inc. Reviewed by: markj Differential Revision: https://reviews.freebsd.org/D38290
This commit is contained in:
parent
606d0e4a9a
commit
822fa7ae1e
@ -199,6 +199,91 @@ recursive_link_Lflag_body()
|
||||
'(' ! -L foo-mirror/foo/baz ')'
|
||||
}
|
||||
|
||||
file_is_sparse()
|
||||
{
|
||||
atf_check test "$(stat -f "%b" "$1")" != "$(stat -f "%z" "$1")"
|
||||
}
|
||||
|
||||
files_are_equal()
|
||||
{
|
||||
atf_check test "$(stat -f "%d %i" "$1")" != "$(stat -f "%d %i" "$2")"
|
||||
atf_check cmp "$1" "$2"
|
||||
}
|
||||
|
||||
atf_test_case sparse_leading_hole
|
||||
sparse_leading_hole_body()
|
||||
{
|
||||
# A one-megabyte hole followed by one megabyte of data
|
||||
truncate -s 1M foo
|
||||
seq -f%015g 65536 >>foo
|
||||
file_is_sparse foo
|
||||
|
||||
atf_check cp foo bar
|
||||
files_are_equal foo bar
|
||||
file_is_sparse bar
|
||||
}
|
||||
|
||||
atf_test_case sparse_multiple_holes
|
||||
sparse_multiple_holes_body()
|
||||
{
|
||||
# Three one-megabyte blocks of data preceded, separated, and
|
||||
# followed by one-megabyte holes
|
||||
truncate -s 1M foo
|
||||
seq -f%015g >>foo
|
||||
truncate -s 3M foo
|
||||
seq -f%015g >>foo
|
||||
truncate -s 5M foo
|
||||
seq -f%015g >>foo
|
||||
truncate -s 7M foo
|
||||
file_is_sparse foo
|
||||
|
||||
atf_check cp foo bar
|
||||
files_are_equal foo bar
|
||||
file_is_sparse bar
|
||||
}
|
||||
|
||||
atf_test_case sparse_only_hole
|
||||
sparse_only_hole_body()
|
||||
{
|
||||
# A one-megabyte hole
|
||||
truncate -s 1M foo
|
||||
file_is_sparse foo
|
||||
|
||||
atf_check cp foo bar
|
||||
files_are_equal foo bar
|
||||
file_is_sparse bar
|
||||
}
|
||||
|
||||
atf_test_case sparse_to_dev
|
||||
sparse_to_dev_body()
|
||||
{
|
||||
# Three one-megabyte blocks of data preceded, separated, and
|
||||
# followed by one-megabyte holes
|
||||
truncate -s 1M foo
|
||||
seq -f%015g >>foo
|
||||
truncate -s 3M foo
|
||||
seq -f%015g >>foo
|
||||
truncate -s 5M foo
|
||||
seq -f%015g >>foo
|
||||
truncate -s 7M foo
|
||||
file_is_sparse foo
|
||||
|
||||
atf_check -o file:foo cp foo /dev/stdout
|
||||
}
|
||||
|
||||
atf_test_case sparse_trailing_hole
|
||||
sparse_trailing_hole_body()
|
||||
{
|
||||
# One megabyte of data followed by a one-megabyte hole
|
||||
seq -f%015g 65536 >foo
|
||||
truncate -s 2M foo
|
||||
file_is_sparse foo
|
||||
|
||||
atf_check cp foo bar
|
||||
files_are_equal foo bar
|
||||
file_is_sparse bar
|
||||
}
|
||||
|
||||
atf_test_case standalone_Pflag
|
||||
standalone_Pflag_body()
|
||||
{
|
||||
@ -221,5 +306,10 @@ atf_init_test_cases()
|
||||
atf_add_test_case recursive_link_dflt
|
||||
atf_add_test_case recursive_link_Hflag
|
||||
atf_add_test_case recursive_link_Lflag
|
||||
atf_add_test_case sparse_leading_hole
|
||||
atf_add_test_case sparse_multiple_holes
|
||||
atf_add_test_case sparse_only_hole
|
||||
atf_add_test_case sparse_to_dev
|
||||
atf_add_test_case sparse_trailing_hole
|
||||
atf_add_test_case standalone_Pflag
|
||||
}
|
||||
|
Loading…
Reference in New Issue
Block a user