From 6f17e2df29a865a29447531e89fb22be710e382d Mon Sep 17 00:00:00 2001 From: Michael Foord Date: Thu, 30 Dec 2010 19:36:29 +0000 Subject: Issue 10786: unittest.TextTestRunner default stream no longer bound at import time --- Lib/unittest/runner.py | 4 +++- Lib/unittest/test/test_runner.py | 17 +++++++++++++++++ Misc/NEWS | 4 ++++ 3 files changed, 24 insertions(+), 1 deletion(-) diff --git a/Lib/unittest/runner.py b/Lib/unittest/runner.py index c5e4258..10c4778 100644 --- a/Lib/unittest/runner.py +++ b/Lib/unittest/runner.py @@ -125,8 +125,10 @@ class TextTestRunner(object): """ resultclass = TextTestResult - def __init__(self, stream=sys.stderr, descriptions=True, verbosity=1, + def __init__(self, stream=None, descriptions=True, verbosity=1, failfast=False, buffer=False, resultclass=None, warnings=None): + if stream is None: + stream = sys.stderr self.stream = _WritelnDecorator(stream) self.descriptions = descriptions self.verbosity = verbosity diff --git a/Lib/unittest/test/test_runner.py b/Lib/unittest/test/test_runner.py index 8f98a02..8e95410 100644 --- a/Lib/unittest/test/test_runner.py +++ b/Lib/unittest/test/test_runner.py @@ -299,3 +299,20 @@ class Test_TextTestRunner(unittest.TestCase): self.assertEqual(out.count(msg), 3) for msg in [ae_msg, at_msg]: self.assertEqual(out.count(msg), 1) + + def testStdErrLookedUpAtInstantiationTime(self): + # see issue 10786 + old_stderr = sys.stderr + f = io.StringIO() + sys.stderr = f + try: + runner = unittest.TextTestRunner() + self.assertTrue(runner.stream.stream is f) + finally: + sys.stderr = old_stderr + + def testSpecifiedStreamUsed(self): + # see issue 10786 + f = io.StringIO() + runner = unittest.TextTestRunner(f) + self.assertTrue(runner.stream.stream is f) diff --git a/Misc/NEWS b/Misc/NEWS index 111452a..9477594b 100644 --- a/Misc/NEWS +++ b/Misc/NEWS @@ -20,6 +20,10 @@ Core and Builtins Library ------- +- Issue 10786: unittest.TextTestRunner default stream no longer bound at + import time. `sys.stderr` now looked up at instantiation time. Fix contributed + by Mark Roddy. + - Issue 10753 - Characters ';','=' and ',' in the PATH_INFO environment variable won't be quoted when the URI is constructed by the wsgiref.util 's request_uri method. According to RFC 3986, these characters can be a part of -- cgit v0.12