"auto" compressor tests: don't assume a specific size, fixes #7363

The tests assumed a specific compressed results size, which
is bad, because it might vary depending on the zlib implementation.

Now the "auto" compressor tests just check if it is the same size
as when unconditionally using the zlib compressor.
This commit is contained in:
Thomas Waldmann 2023-02-18 13:57:57 +01:00
parent 9e22b27dad
commit 793104ff13
No known key found for this signature in database
GPG Key ID: 243ACFA951F78E01
1 changed files with 17 additions and 11 deletions

View File

@ -2243,22 +2243,11 @@ class ArchiverTestCase(ArchiverTestCaseBase):
def test_compression_zlib_compressible(self):
size, csize = self._get_sizes('zlib', compressible=True)
assert csize < size * 0.1
assert csize == 35
def test_compression_zlib_uncompressible(self):
size, csize = self._get_sizes('zlib', compressible=False)
assert csize >= size
def test_compression_auto_compressible(self):
size, csize = self._get_sizes('auto,zlib', compressible=True)
assert csize < size * 0.1
assert csize == 35 # same as compression 'zlib'
def test_compression_auto_uncompressible(self):
size, csize = self._get_sizes('auto,zlib', compressible=False)
assert csize >= size
assert csize == size + 3 # same as compression 'none'
def test_compression_lz4_compressible(self):
size, csize = self._get_sizes('lz4', compressible=True)
assert csize < size * 0.1
@ -2275,6 +2264,23 @@ class ArchiverTestCase(ArchiverTestCaseBase):
size, csize = self._get_sizes('lzma', compressible=False)
assert csize >= size
def test_compression_auto_compressible(self):
# this is testing whether the "auto" meta-compressor chooses the "expensive" zlib compression
# if it detects that the data is very compressible (and not "lz4" nor "none" compression).
auto_size, auto_csize = self._get_sizes('auto,zlib', compressible=True)
self.cmd('delete', self.repository_location)
zlib_size, zlib_csize = self._get_sizes('zlib', compressible=True)
assert auto_size == zlib_size
assert auto_csize < auto_size * 0.1 # it did compress!
assert auto_csize == zlib_csize # looking at the result size, it seems to be zlib compressed
def test_compression_auto_uncompressible(self):
# this is testing whether the "auto" meta-compressor chooses the "none" compression (storing the
# data "as is" with just the 3 bytes header) if all else would result in something bigger.
size, csize = self._get_sizes('auto,zlib', compressible=False)
assert csize >= size
assert csize == size + 3 # same as compression 'none'
def test_change_passphrase(self):
self.cmd('init', '--encryption=repokey', self.repository_location)
os.environ['BORG_NEW_PASSPHRASE'] = 'newpassphrase'