Merge pull request #1173 from ThomasWaldmann/fix-sparse-test

fix sparse file test, fixes #1170
This commit is contained in:
TW 2016-06-19 22:48:33 +02:00 committed by GitHub
commit 91f92d65df
1 changed files with 15 additions and 2 deletions

View File

@ -412,8 +412,21 @@ class ArchiverTestCase(ArchiverTestCaseBase):
self.assert_equal(fd.read(hole_size), b'\0' * hole_size) self.assert_equal(fd.read(hole_size), b'\0' * hole_size)
st = os.stat(filename) st = os.stat(filename)
self.assert_equal(st.st_size, total_len) self.assert_equal(st.st_size, total_len)
if sparse_support and hasattr(st, 'st_blocks'): if sparse_support:
self.assert_true(st.st_blocks * 512 < total_len / 9) # is output sparse? if hasattr(st, 'st_blocks'):
# do only check if it is less, do NOT check if it is much less
# as that causes troubles on xfs and zfs:
self.assert_true(st.st_blocks * 512 < total_len)
if hasattr(os, 'SEEK_HOLE') and hasattr(os, 'SEEK_DATA'):
with open(filename, 'rb') as fd:
# only check if the first hole is as expected, because the 2nd hole check
# is problematic on xfs due to its "dynamic speculative EOF preallocation
try:
self.assert_equal(fd.seek(0, os.SEEK_HOLE), 0)
self.assert_equal(fd.seek(0, os.SEEK_DATA), hole_size)
except OSError:
# does not really support SEEK_HOLE/SEEK_DATA
pass
def test_unusual_filenames(self): def test_unusual_filenames(self):
filenames = ['normal', 'with some blanks', '(with_parens)', ] filenames = ['normal', 'with some blanks', '(with_parens)', ]