From: Nadeem Vawda Date: Sun, 28 Oct 2012 14:21:37 +0000 (+0100) Subject: Merge: Add test for BZ2Decompressor.decompress("") after end of stream. X-Git-Tag: v3.3.1rc1~729^2 X-Git-Url: https://granicus.if.org/sourcecode?a=commitdiff_plain;h=6294305c2f97eca55789574d8f14aa6765bb3007;p=python Merge: Add test for BZ2Decompressor.decompress("") after end of stream. --- 6294305c2f97eca55789574d8f14aa6765bb3007 diff --cc Lib/test/test_bz2.py index 257b144500,5b48e2b6fb..f4e81db6e2 --- a/Lib/test/test_bz2.py +++ b/Lib/test/test_bz2.py @@@ -647,26 -364,22 +647,27 @@@ class BZ2DecompressorTest(BaseTest) 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)