[Python-checkins] r76198 - in python/branches/py3k: Lib/test/test_unittest.py Lib/unittest/runner.py Misc/NEWS
antoine.pitrou
python-checkins at python.org
Tue Nov 10 22:34:48 CET 2009
Author: antoine.pitrou
Date: Tue Nov 10 22:34:48 2009
New Revision: 76198
Log:
Merged revisions 76196 via svnmerge from
svn+ssh://pythondev@svn.python.org/python/trunk
........
r76196 | antoine.pitrou | 2009-11-10 21:49:30 +0100 (mar., 10 nov. 2009) | 8 lines
Issue #7197: Allow unittest.TextTestRunner objects to be pickled and
unpickled. This fixes crashes under Windows when trying to run
test_multiprocessing in verbose mode.
Additionally, Test_TextTestRunner hadn't been enabled in test_unittest.
........
Modified:
python/branches/py3k/ (props changed)
python/branches/py3k/Lib/test/test_unittest.py
python/branches/py3k/Lib/unittest/runner.py
python/branches/py3k/Misc/NEWS
Modified: python/branches/py3k/Lib/test/test_unittest.py
==============================================================================
--- python/branches/py3k/Lib/test/test_unittest.py (original)
+++ python/branches/py3k/Lib/test/test_unittest.py Tue Nov 10 22:34:48 2009
@@ -17,6 +17,7 @@
import types
from copy import deepcopy
import io
+import pickle
### Support code
################################################################
@@ -3441,6 +3442,17 @@
expected = ['startTestRun', 'stopTestRun']
self.assertEqual(events, expected)
+ def test_pickle_unpickle(self):
+ # Issue #7197: a TextTestRunner should be (un)pickleable. This is
+ # required by test_multiprocessing under Windows (in verbose mode).
+ stream = io.StringIO("foo")
+ runner = unittest.TextTestRunner(stream)
+ for protocol in range(2, pickle.HIGHEST_PROTOCOL + 1):
+ s = pickle.dumps(runner, protocol)
+ obj = pickle.loads(s)
+ # StringIO objects never compare equal, a cheap test instead.
+ self.assertEqual(obj.stream.getvalue(), stream.getvalue())
+
class TestDiscovery(TestCase):
@@ -3729,7 +3741,7 @@
support.run_unittest(Test_TestCase, Test_TestLoader,
Test_TestSuite, Test_TestResult, Test_FunctionTestCase,
Test_TestSkipping, Test_Assertions, TestLongMessage,
- Test_TestProgram, TestCleanUp, TestDiscovery)
+ Test_TestProgram, TestCleanUp, TestDiscovery, Test_TextTestRunner)
if __name__ == "__main__":
test_main()
Modified: python/branches/py3k/Lib/unittest/runner.py
==============================================================================
--- python/branches/py3k/Lib/unittest/runner.py (original)
+++ python/branches/py3k/Lib/unittest/runner.py Tue Nov 10 22:34:48 2009
@@ -12,6 +12,8 @@
self.stream = stream
def __getattr__(self, attr):
+ if attr in ('stream', '__getstate__'):
+ raise AttributeError(attr)
return getattr(self.stream,attr)
def writeln(self, arg=None):
Modified: python/branches/py3k/Misc/NEWS
==============================================================================
--- python/branches/py3k/Misc/NEWS (original)
+++ python/branches/py3k/Misc/NEWS Tue Nov 10 22:34:48 2009
@@ -123,6 +123,10 @@
Library
-------
+- Issue #7197: Allow unittest.TextTestRunner objects to be pickled and
+ unpickled. This fixes crashes under Windows when trying to run
+ test_multiprocessing in verbose mode.
+
- Issue #3001: Add a C implementation of recursive locks which is used by
default when instantiating a `threading.RLock` object. This makes
recursive locks as fast as regular non-recursive locks (previously,
More information about the Python-checkins
mailing list