changeset: 99077:94664fb4354e branch: 2.7 parent: 99070:d80954d941c7 user: Serhiy Storchaka date: Thu Nov 12 11:36:42 2015 +0200 files: Lib/test/test_dictviews.py Lib/test/test_zlib.py description: Issue #22995: Backported additional tests for non-pickleable types. diff -r d80954d941c7 -r 94664fb4354e Lib/test/test_dictviews.py --- a/Lib/test/test_dictviews.py Wed Nov 11 22:38:41 2015 -0800 +++ b/Lib/test/test_dictviews.py Thu Nov 12 11:36:42 2015 +0200 @@ -1,3 +1,5 @@ +import copy +import pickle import unittest import collections from test import test_support @@ -186,6 +188,22 @@ self.assertIsInstance(d.viewitems(), collections.Iterable) self.assertIsInstance(d.viewitems(), collections.Container) + def test_copy(self): + d = {1: 10, "a": "ABC"} + self.assertRaises(TypeError, copy.copy, d.viewkeys()) + self.assertRaises(TypeError, copy.copy, d.viewvalues()) + self.assertRaises(TypeError, copy.copy, d.viewitems()) + + def test_pickle(self): + d = {1: 10, "a": "ABC"} + for proto in range(pickle.HIGHEST_PROTOCOL + 1): + self.assertRaises((TypeError, pickle.PicklingError), + pickle.dumps, d.viewkeys(), proto) + self.assertRaises((TypeError, pickle.PicklingError), + pickle.dumps, d.viewvalues(), proto) + self.assertRaises((TypeError, pickle.PicklingError), + pickle.dumps, d.viewitems(), proto) + def test_main(): test_support.run_unittest(DictSetTest) diff -r d80954d941c7 -r 94664fb4354e Lib/test/test_zlib.py --- a/Lib/test/test_zlib.py Wed Nov 11 22:38:41 2015 -0800 +++ b/Lib/test/test_zlib.py Thu Nov 12 11:36:42 2015 +0200 @@ -1,6 +1,7 @@ import unittest from test.test_support import TESTFN, run_unittest, import_module, unlink, requires import binascii +import pickle import random from test.test_support import precisionbigmemtest, _1G, _4G import sys @@ -502,6 +503,16 @@ d.flush() self.assertRaises(ValueError, d.copy) + def test_compresspickle(self): + for proto in range(pickle.HIGHEST_PROTOCOL + 1): + with self.assertRaises((TypeError, pickle.PicklingError)): + pickle.dumps(zlib.compressobj(zlib.Z_BEST_COMPRESSION), proto) + + def test_decompresspickle(self): + for proto in range(pickle.HIGHEST_PROTOCOL + 1): + with self.assertRaises((TypeError, pickle.PicklingError)): + pickle.dumps(zlib.decompressobj(), proto) + # Memory use of the following functions takes into account overallocation @precisionbigmemtest(size=_1G + 1024 * 1024, memuse=3)