Commit 58c1e788 authored by Michael Foord's avatar Michael Foord

TestResult stores original sys.stdout and tests no longer use sys.__stdout__...

TestResult stores original sys.stdout and tests no longer use sys.__stdout__ (etc) in tests for unittest -b command line option
parent 19479fa4
...@@ -53,6 +53,8 @@ class TestResult(object): ...@@ -53,6 +53,8 @@ class TestResult(object):
self.buffer = False self.buffer = False
self._stdout_buffer = StringIO() self._stdout_buffer = StringIO()
self._stderr_buffer = StringIO() self._stderr_buffer = StringIO()
self._original_stdout = sys.stdout
self._original_stderr = sys.stderr
self._mirrorOutput = False self._mirrorOutput = False
def printErrors(self): def printErrors(self):
...@@ -81,11 +83,11 @@ class TestResult(object): ...@@ -81,11 +83,11 @@ class TestResult(object):
if output: if output:
if not output.endswith(NEWLINE): if not output.endswith(NEWLINE):
output += NEWLINE output += NEWLINE
sys.__stdout__.write(STDOUT_LINE % output) self._original_stdout.write(STDOUT_LINE % output)
if error: if error:
if not error.endswith(NEWLINE): if not error.endswith(NEWLINE):
error += NEWLINE error += NEWLINE
sys.__stderr__.write(STDERR_LINE % error) self._original_stderr.write(STDERR_LINE % error)
sys.stdout = _std_out sys.stdout = _std_out
sys.stderr = _std_err sys.stderr = _std_err
......
...@@ -362,12 +362,12 @@ class Test_OldTestResult(unittest.TestCase): ...@@ -362,12 +362,12 @@ class Test_OldTestResult(unittest.TestCase):
class TestOutputBuffering(unittest.TestCase): class TestOutputBuffering(unittest.TestCase):
def setUp(self): def setUp(self):
self._real_out = sys.__stdout__ self._real_out = sys.stdout
self._real_err = sys.__stderr__ self._real_err = sys.stderr
def tearDown(self): def tearDown(self):
sys.stdout = sys.__stdout__ = self._real_out sys.stdout = self._real_out
sys.stderr = sys.__stderr__ = self._real_err sys.stderr = self._real_err
def testBufferOutputOff(self): def testBufferOutputOff(self):
real_out = self._real_out real_out = self._real_out
...@@ -407,8 +407,8 @@ class TestOutputBuffering(unittest.TestCase): ...@@ -407,8 +407,8 @@ class TestOutputBuffering(unittest.TestCase):
out_stream = sys.stdout out_stream = sys.stdout
err_stream = sys.stderr err_stream = sys.stderr
sys.__stdout__ = StringIO() result._original_stdout = StringIO()
sys.__stderr__ = StringIO() result._original_stderr = StringIO()
print 'foo' print 'foo'
print >> sys.stderr, 'bar' print >> sys.stderr, 'bar'
...@@ -416,8 +416,8 @@ class TestOutputBuffering(unittest.TestCase): ...@@ -416,8 +416,8 @@ class TestOutputBuffering(unittest.TestCase):
self.assertEqual(out_stream.getvalue(), 'foo\n') self.assertEqual(out_stream.getvalue(), 'foo\n')
self.assertEqual(err_stream.getvalue(), 'bar\n') self.assertEqual(err_stream.getvalue(), 'bar\n')
self.assertEqual(sys.__stdout__.getvalue(), '') self.assertEqual(result._original_stdout.getvalue(), '')
self.assertEqual(sys.__stderr__.getvalue(), '') self.assertEqual(result._original_stderr.getvalue(), '')
result.addSuccess(self) result.addSuccess(self)
result.stopTest(self) result.stopTest(self)
...@@ -425,8 +425,8 @@ class TestOutputBuffering(unittest.TestCase): ...@@ -425,8 +425,8 @@ class TestOutputBuffering(unittest.TestCase):
self.assertIs(real_out, sys.stdout) self.assertIs(real_out, sys.stdout)
self.assertIs(real_err, sys.stderr) self.assertIs(real_err, sys.stderr)
self.assertEqual(sys.__stdout__.getvalue(), '') self.assertEqual(result._original_stdout.getvalue(), '')
self.assertEqual(sys.__stderr__.getvalue(), '') self.assertEqual(result._original_stderr.getvalue(), '')
self.assertEqual(out_stream.getvalue(), '') self.assertEqual(out_stream.getvalue(), '')
self.assertEqual(err_stream.getvalue(), '') self.assertEqual(err_stream.getvalue(), '')
...@@ -439,20 +439,17 @@ class TestOutputBuffering(unittest.TestCase): ...@@ -439,20 +439,17 @@ class TestOutputBuffering(unittest.TestCase):
return result return result
def testBufferOutputAddErrorOrFailure(self): def testBufferOutputAddErrorOrFailure(self):
def clear():
sys.__stdout__ = StringIO()
sys.__stderr__ = StringIO()
for message_attr, add_attr, include_error in [ for message_attr, add_attr, include_error in [
('errors', 'addError', True), ('errors', 'addError', True),
('failures', 'addFailure', False), ('failures', 'addFailure', False),
('errors', 'addError', True), ('errors', 'addError', True),
('failures', 'addFailure', False) ('failures', 'addFailure', False)
]: ]:
clear()
result = self.getStartedResult() result = self.getStartedResult()
buffered_out = sys.stdout buffered_out = sys.stdout
buffered_err = sys.stderr buffered_err = sys.stderr
result._original_stdout = StringIO()
result._original_stderr = StringIO()
print >> sys.stdout, 'foo' print >> sys.stdout, 'foo'
if include_error: if include_error:
...@@ -480,8 +477,8 @@ class TestOutputBuffering(unittest.TestCase): ...@@ -480,8 +477,8 @@ class TestOutputBuffering(unittest.TestCase):
expectedFullMessage = 'None\n%s%s' % (expectedOutMessage, expectedErrMessage) expectedFullMessage = 'None\n%s%s' % (expectedOutMessage, expectedErrMessage)
self.assertIs(test, self) self.assertIs(test, self)
self.assertEqual(sys.__stdout__.getvalue(), expectedOutMessage) self.assertEqual(result._original_stdout.getvalue(), expectedOutMessage)
self.assertEqual(sys.__stderr__.getvalue(), expectedErrMessage) self.assertEqual(result._original_stderr.getvalue(), expectedErrMessage)
self.assertMultiLineEqual(message, expectedFullMessage) self.assertMultiLineEqual(message, expectedFullMessage)
if __name__ == '__main__': if __name__ == '__main__':
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment