diff options
author | Nadeem Vawda <nadeem.vawda@gmail.com> | 2013-10-28 20:41:24 (GMT) |
---|---|---|
committer | Nadeem Vawda <nadeem.vawda@gmail.com> | 2013-10-28 20:41:24 (GMT) |
commit | e6514f533efba25e5aeba50208515d02d528995a (patch) | |
tree | 9895781bdec365d927ee7669366773119c5164ad /Lib/test/test_bz2.py | |
parent | d1b48998e5b404387c8f0942197189ba3207c15e (diff) | |
parent | 3797065ac55997741fd625a30a8308c04ee5c9b9 (diff) | |
download | cpython-e6514f533efba25e5aeba50208515d02d528995a.zip cpython-e6514f533efba25e5aeba50208515d02d528995a.tar.gz cpython-e6514f533efba25e5aeba50208515d02d528995a.tar.bz2 |
#19395: Raise exception when pickling a (BZ2|LZMA)(Compressor|Decompressor).
The underlying C libraries provide no mechanism for serializing compressor and
decompressor objects, so actually pickling these classes is impractical.
Previously, these objects would be pickled without error, but attempting to use
a deserialized instance would segfault the interpreter.
Diffstat (limited to 'Lib/test/test_bz2.py')
-rw-r--r-- | Lib/test/test_bz2.py | 10 |
1 files changed, 10 insertions, 0 deletions
diff --git a/Lib/test/test_bz2.py b/Lib/test/test_bz2.py index d087cc3..8d93e2d 100644 --- a/Lib/test/test_bz2.py +++ b/Lib/test/test_bz2.py @@ -5,6 +5,7 @@ from test.support import bigmemtest, _4G import unittest from io import BytesIO import os +import pickle import random import subprocess import sys @@ -628,6 +629,11 @@ class BZ2CompressorTest(BaseTest): finally: data = None + def testPickle(self): + with self.assertRaises(TypeError): + pickle.dumps(BZ2Compressor()) + + class BZ2DecompressorTest(BaseTest): def test_Constructor(self): self.assertRaises(TypeError, BZ2Decompressor, 42) @@ -679,6 +685,10 @@ class BZ2DecompressorTest(BaseTest): compressed = None decompressed = None + def testPickle(self): + with self.assertRaises(TypeError): + pickle.dumps(BZ2Decompressor()) + class CompressDecompressTest(BaseTest): def testCompress(self): |