bz2d = BZ2Decompressor()
text = bz2d.decompress(self.DATA)
self.assertRaises(EOFError, bz2d.decompress, b"anything")
+ self.assertRaises(EOFError, bz2d.decompress, b"")
- @bigmemtest(size=_4G, memuse=1.25, dry_run=False)
- def testBigmem(self, unused_size):
- # Issue #14398: decompression fails when output data is >=2GB.
- text = bz2.BZ2Decompressor().decompress(self.DATA_BIGMEM)
- self.assertEqual(len(text), _4G)
- self.assertEqual(text.strip(b"\0"), b"")
-
-
-class FuncTest(BaseTest):
- "Test module functions"
-
+ @bigmemtest(size=_4G + 100, memuse=3)
+ def testDecompress4G(self, size):
+ # "Test BZ2Decompressor.decompress() with >4GiB input"
+ blocksize = 10 * 1024 * 1024
+ block = random.getrandbits(blocksize * 8).to_bytes(blocksize, 'little')
+ try:
+ data = block * (size // blocksize + 1)
+ compressed = bz2.compress(data)
+ bz2d = BZ2Decompressor()
+ decompressed = bz2d.decompress(compressed)
+ self.assertTrue(decompressed == data)
+ finally:
+ data = None
+ compressed = None
+ decompressed = None
+
+
+class CompressDecompressTest(BaseTest):
def testCompress(self):
- # "Test compress() function"
data = bz2.compress(self.TEXT)
self.assertEqual(self.decompress(data), self.TEXT)