Make the XMLRCP CGIHandlerTestCase pass like it did before the change of

the test to use StringIO instead of a temp file.  There may or may not
be an underlying problem here, so this patch makes the test function
as originally designed until a determination can be made as to whether
or not there is an underlying bug here.  See issue 7165 for discussion.
This commit is contained in:
R. David Murray 2009-10-26 08:24:14 +00:00
parent cc16d16add
commit 0548ce088d
1 changed files with 19 additions and 2 deletions

View File

@ -10,6 +10,8 @@ import http.client
import socket import socket
import os import os
import re import re
import io
import contextlib
from test import support from test import support
alist = [{'astring': 'foo@bar.baz.spam', alist = [{'astring': 'foo@bar.baz.spam',
@ -713,6 +715,21 @@ class FailingServerTestCase(unittest.TestCase):
else: else:
self.fail('ProtocolError not raised') self.fail('ProtocolError not raised')
@contextlib.contextmanager
def captured_stdout(encoding='utf-8'):
"""A variation on support.captured_stdout() which gives a text stream
having a `buffer` attribute.
"""
import io
orig_stdout = sys.stdout
sys.stdout = io.TextIOWrapper(io.BytesIO(), encoding=encoding)
try:
yield sys.stdout
finally:
sys.stdout = orig_stdout
class CGIHandlerTestCase(unittest.TestCase): class CGIHandlerTestCase(unittest.TestCase):
def setUp(self): def setUp(self):
self.cgi = xmlrpc.server.CGIXMLRPCRequestHandler() self.cgi = xmlrpc.server.CGIXMLRPCRequestHandler()
@ -725,7 +742,7 @@ class CGIHandlerTestCase(unittest.TestCase):
env['REQUEST_METHOD'] = 'GET' env['REQUEST_METHOD'] = 'GET'
# if the method is GET and no request_text is given, it runs handle_get # if the method is GET and no request_text is given, it runs handle_get
# get sysout output # get sysout output
with support.captured_stdout() as data_out: with captured_stdout(encoding=self.cgi.encoding) as data_out:
self.cgi.handle_request() self.cgi.handle_request()
# parse Status header # parse Status header
@ -754,7 +771,7 @@ class CGIHandlerTestCase(unittest.TestCase):
""" """
with support.EnvironmentVarGuard() as env, \ with support.EnvironmentVarGuard() as env, \
support.captured_stdout() as data_out, \ captured_stdout(encoding=self.cgi.encoding) as data_out, \
support.captured_stdin() as data_in: support.captured_stdin() as data_in:
data_in.write(data) data_in.write(data)
data_in.seek(0) data_in.seek(0)