diff options
author | Antoine Pitrou <solipsis@pitrou.net> | 2010-11-05 21:15:39 (GMT) |
---|---|---|
committer | Antoine Pitrou <solipsis@pitrou.net> | 2010-11-05 21:15:39 (GMT) |
commit | 243757eb79fe4bee33882b1813cf33839117570f (patch) | |
tree | a9403be5a75dedbb5c5b6ea4ee563b7155c707fd /Lib/test | |
parent | 4a5f9677f31d75454ec10a0baefef37b63568a31 (diff) | |
download | cpython-243757eb79fe4bee33882b1813cf33839117570f.zip cpython-243757eb79fe4bee33882b1813cf33839117570f.tar.gz cpython-243757eb79fe4bee33882b1813cf33839117570f.tar.bz2 |
Issue #10180: Pickling file objects is now explicitly forbidden, since
unpickling them produced nonsensical results.
Diffstat (limited to 'Lib/test')
-rw-r--r-- | Lib/test/test_io.py | 18 |
1 files changed, 18 insertions, 0 deletions
diff --git a/Lib/test/test_io.py b/Lib/test/test_io.py index 680e36d..91dd803 100644 --- a/Lib/test/test_io.py +++ b/Lib/test/test_io.py @@ -30,6 +30,7 @@ import abc import signal import errno import warnings +import pickle from itertools import cycle, count from collections import deque from test import support @@ -2566,6 +2567,23 @@ class MiscIOTest(unittest.TestCase): self._check_warn_on_dealloc_fd("r") + def test_pickling(self): + # Pickling file objects is forbidden + for kwargs in [ + {"mode": "w"}, + {"mode": "wb"}, + {"mode": "wb", "buffering": 0}, + {"mode": "r"}, + {"mode": "rb"}, + {"mode": "rb", "buffering": 0}, + {"mode": "w+"}, + {"mode": "w+b"}, + {"mode": "w+b", "buffering": 0}, + ]: + for protocol in range(pickle.HIGHEST_PROTOCOL + 1): + with self.open(support.TESTFN, **kwargs) as f: + self.assertRaises(TypeError, pickle.dumps, f, protocol) + class CMiscIOTest(MiscIOTest): io = io |