From: Michael Foord Date: Wed, 7 Apr 2010 23:04:22 +0000 (+0000) Subject: unittest.result.TestResult does not create its buffers until they're used. It uses... X-Git-Tag: v2.7b1~16 X-Git-Url: https://granicus.if.org/sourcecode?a=commitdiff_plain;h=f6ff26c486373dcb6c9ee2f4aae102202e89b722;p=python unittest.result.TestResult does not create its buffers until they're used. It uses StringIO not cStringIO. Issue 8333. --- diff --git a/Lib/unittest/result.py b/Lib/unittest/result.py index b9045f4b07..4b7cde658a 100644 --- a/Lib/unittest/result.py +++ b/Lib/unittest/result.py @@ -4,7 +4,7 @@ import os import sys import traceback -from cStringIO import StringIO +from StringIO import StringIO from . import util from functools import wraps @@ -46,8 +46,8 @@ class TestResult(object): self.unexpectedSuccesses = [] self.shouldStop = False self.buffer = False - self._stdout_buffer = StringIO() - self._stderr_buffer = StringIO() + self._stdout_buffer = None + self._stderr_buffer = None self._original_stdout = sys.stdout self._original_stderr = sys.stderr self._mirrorOutput = False @@ -60,6 +60,9 @@ class TestResult(object): self.testsRun += 1 self._mirrorOutput = False if self.buffer: + if self._stderr_buffer is None: + self._stderr_buffer = StringIO() + self._stdout_buffer = StringIO() sys.stdout = self._stdout_buffer sys.stderr = self._stderr_buffer diff --git a/Lib/unittest/test/test_result.py b/Lib/unittest/test/test_result.py index c02b8efab2..57ac5494b6 100644 --- a/Lib/unittest/test/test_result.py +++ b/Lib/unittest/test/test_result.py @@ -1,6 +1,6 @@ import sys import textwrap -from cStringIO import StringIO, OutputType +from StringIO import StringIO from test import test_support import unittest @@ -24,6 +24,8 @@ class Test_TestResult(unittest.TestCase): self.assertEqual(len(result.failures), 0) self.assertEqual(result.testsRun, 0) self.assertEqual(result.shouldStop, False) + self.assertIsNone(result._stdout_buffer) + self.assertIsNone(result._stderr_buffer) # "This method can be called to signal that the set of tests being @@ -400,8 +402,8 @@ class TestOutputBuffering(unittest.TestCase): self.assertIsNot(real_out, sys.stdout) self.assertIsNot(real_err, sys.stderr) - self.assertIsInstance(sys.stdout, OutputType) - self.assertIsInstance(sys.stderr, OutputType) + self.assertIsInstance(sys.stdout, StringIO) + self.assertIsInstance(sys.stderr, StringIO) self.assertIsNot(sys.stdout, sys.stderr) out_stream = sys.stdout