From: Martin Matuska Date: Fri, 12 Apr 2019 15:22:11 +0000 (+0200) Subject: Unbreak sparse file tests on the APFS file system X-Git-Tag: v3.4.0~80 X-Git-Url: http://git.ipfire.org/?a=commitdiff_plain;h=a3cc0fd28a4300c5ad51c7e079d81641df043431;p=thirdparty%2Flibarchive.git Unbreak sparse file tests on the APFS file system The hole size needs to be at least 4097*4096 bytes. Fixes #1123 --- diff --git a/libarchive/test/test_sparse_basic.c b/libarchive/test/test_sparse_basic.c index c677893ad..f12b6af48 100644 --- a/libarchive/test/test_sparse_basic.c +++ b/libarchive/test/test_sparse_basic.c @@ -68,6 +68,14 @@ struct sparse { static void create_sparse_file(const char *, const struct sparse *); +#if defined(__APPLE__) +/* On APFS holes need to be at least 4096x4097 bytes */ +#define MIN_HOLE 16781312 +#else +/* Elsewhere we work with 4096*10 bytes */ +#define MIN_HOLE 409600 +#endif + #if defined(_WIN32) && !defined(__CYGWIN__) #include /* @@ -502,42 +510,42 @@ DEFINE_TEST(test_sparse_basic) */ const struct sparse sparse_file0[] = { // 0 // 1024 - { DATA, 1024 }, { HOLE, 2048000 }, + { DATA, 1024 }, { HOLE, MIN_HOLE + 1638400 }, // 2049024 // 2051072 - { DATA, 2048 }, { HOLE, 2048000 }, + { DATA, 2048 }, { HOLE, MIN_HOLE + 1638400 }, // 4099072 // 4103168 - { DATA, 4096 }, { HOLE, 20480000 }, + { DATA, 4096 }, { HOLE, MIN_HOLE + 20070400 }, // 24583168 // 24591360 - { DATA, 8192 }, { HOLE, 204800000 }, + { DATA, 8192 }, { HOLE, MIN_HOLE + 204390400 }, // 229391360 // 229391361 { DATA, 1 }, { END, 0 } }; const struct sparse sparse_file1[] = { - { HOLE, 409600 }, { DATA, 1 }, - { HOLE, 409600 }, { DATA, 1 }, - { HOLE, 409600 }, { END, 0 } + { HOLE, MIN_HOLE }, { DATA, 1 }, + { HOLE, MIN_HOLE }, { DATA, 1 }, + { HOLE, MIN_HOLE }, { END, 0 } }; const struct sparse sparse_file2[] = { - { HOLE, 409600 * 1 }, { DATA, 1024 }, - { HOLE, 409600 * 2 }, { DATA, 1024 }, - { HOLE, 409600 * 3 }, { DATA, 1024 }, - { HOLE, 409600 * 4 }, { DATA, 1024 }, - { HOLE, 409600 * 5 }, { DATA, 1024 }, - { HOLE, 409600 * 6 }, { DATA, 1024 }, - { HOLE, 409600 * 7 }, { DATA, 1024 }, - { HOLE, 409600 * 8 }, { DATA, 1024 }, - { HOLE, 409600 * 9 }, { DATA, 1024 }, - { HOLE, 409600 * 10}, { DATA, 1024 },/* 10 */ - { HOLE, 409600 * 1 }, { DATA, 1024 * 1 }, - { HOLE, 409600 * 2 }, { DATA, 1024 * 2 }, - { HOLE, 409600 * 3 }, { DATA, 1024 * 3 }, - { HOLE, 409600 * 4 }, { DATA, 1024 * 4 }, - { HOLE, 409600 * 5 }, { DATA, 1024 * 5 }, - { HOLE, 409600 * 6 }, { DATA, 1024 * 6 }, - { HOLE, 409600 * 7 }, { DATA, 1024 * 7 }, - { HOLE, 409600 * 8 }, { DATA, 1024 * 8 }, - { HOLE, 409600 * 9 }, { DATA, 1024 * 9 }, - { HOLE, 409600 * 10}, { DATA, 1024 * 10},/* 20 */ + { HOLE, MIN_HOLE }, { DATA, 1024 }, + { HOLE, MIN_HOLE + 409600 * 1 }, { DATA, 1024 }, + { HOLE, MIN_HOLE + 409600 * 2 }, { DATA, 1024 }, + { HOLE, MIN_HOLE + 409600 * 3 }, { DATA, 1024 }, + { HOLE, MIN_HOLE + 409600 * 4 }, { DATA, 1024 }, + { HOLE, MIN_HOLE + 409600 * 5 }, { DATA, 1024 }, + { HOLE, MIN_HOLE + 409600 * 6 }, { DATA, 1024 }, + { HOLE, MIN_HOLE + 409600 * 7 }, { DATA, 1024 }, + { HOLE, MIN_HOLE + 409600 * 8 }, { DATA, 1024 }, + { HOLE, MIN_HOLE + 409600 * 9}, { DATA, 1024 },/* 10 */ + { HOLE, MIN_HOLE }, { DATA, 1024 * 1 }, + { HOLE, MIN_HOLE + 409600 * 1 }, { DATA, 1024 * 2 }, + { HOLE, MIN_HOLE + 409600 * 2 }, { DATA, 1024 * 3 }, + { HOLE, MIN_HOLE + 409600 * 3 }, { DATA, 1024 * 4 }, + { HOLE, MIN_HOLE + 409600 * 4 }, { DATA, 1024 * 5 }, + { HOLE, MIN_HOLE + 409600 * 5 }, { DATA, 1024 * 6 }, + { HOLE, MIN_HOLE + 409600 * 6 }, { DATA, 1024 * 7 }, + { HOLE, MIN_HOLE + 409600 * 7 }, { DATA, 1024 * 8 }, + { HOLE, MIN_HOLE + 409600 * 8 }, { DATA, 1024 * 9 }, + { HOLE, MIN_HOLE + 409600 * 9}, { DATA, 1024 * 10},/* 20 */ { END, 0 } }; const struct sparse sparse_file3[] = { @@ -610,7 +618,7 @@ DEFINE_TEST(test_fully_sparse_files) const char *skip_sparse_tests; const struct sparse sparse_file[] = { - { HOLE, 409600 }, { END, 0 } + { HOLE, MIN_HOLE }, { END, 0 } }; skip_sparse_tests = getenv("SKIP_TEST_SPARSE");