Fix CGI tests to take into account the platform's line ending (issue #13119)

This commit is contained in:
Antoine Pitrou 2012-08-05 14:53:33 +02:00
commit 4adc9a8cc9
1 changed files with 7 additions and 5 deletions

View File

@ -313,6 +313,8 @@ class CGIHTTPServerTestCase(BaseTestCase):
class request_handler(NoLogRequestHandler, CGIHTTPRequestHandler): class request_handler(NoLogRequestHandler, CGIHTTPRequestHandler):
pass pass
linesep = os.linesep.encode('ascii')
def setUp(self): def setUp(self):
BaseTestCase.setUp(self) BaseTestCase.setUp(self)
self.cwd = os.getcwd() self.cwd = os.getcwd()
@ -410,7 +412,7 @@ class CGIHTTPServerTestCase(BaseTestCase):
def test_headers_and_content(self): def test_headers_and_content(self):
res = self.request('/cgi-bin/file1.py') res = self.request('/cgi-bin/file1.py')
self.assertEqual((b'Hello World\n', 'text/html', 200), self.assertEqual((b'Hello World' + self.linesep, 'text/html', 200),
(res.read(), res.getheader('Content-type'), res.status)) (res.read(), res.getheader('Content-type'), res.status))
def test_post(self): def test_post(self):
@ -419,7 +421,7 @@ class CGIHTTPServerTestCase(BaseTestCase):
headers = {'Content-type' : 'application/x-www-form-urlencoded'} headers = {'Content-type' : 'application/x-www-form-urlencoded'}
res = self.request('/cgi-bin/file2.py', 'POST', params, headers) res = self.request('/cgi-bin/file2.py', 'POST', params, headers)
self.assertEqual(res.read(), b'1, python, 123456\n') self.assertEqual(res.read(), b'1, python, 123456' + self.linesep)
def test_invaliduri(self): def test_invaliduri(self):
res = self.request('/cgi-bin/invalid') res = self.request('/cgi-bin/invalid')
@ -430,20 +432,20 @@ class CGIHTTPServerTestCase(BaseTestCase):
headers = {b'Authorization' : b'Basic ' + headers = {b'Authorization' : b'Basic ' +
base64.b64encode(b'username:pass')} base64.b64encode(b'username:pass')}
res = self.request('/cgi-bin/file1.py', 'GET', headers=headers) res = self.request('/cgi-bin/file1.py', 'GET', headers=headers)
self.assertEqual((b'Hello World\n', 'text/html', 200), self.assertEqual((b'Hello World' + self.linesep, 'text/html', 200),
(res.read(), res.getheader('Content-type'), res.status)) (res.read(), res.getheader('Content-type'), res.status))
def test_no_leading_slash(self): def test_no_leading_slash(self):
# http://bugs.python.org/issue2254 # http://bugs.python.org/issue2254
res = self.request('cgi-bin/file1.py') res = self.request('cgi-bin/file1.py')
self.assertEqual((b'Hello World\n', 'text/html', 200), self.assertEqual((b'Hello World' + self.linesep, 'text/html', 200),
(res.read(), res.getheader('Content-type'), res.status)) (res.read(), res.getheader('Content-type'), res.status))
def test_os_environ_is_not_altered(self): def test_os_environ_is_not_altered(self):
signature = "Test CGI Server" signature = "Test CGI Server"
os.environ['SERVER_SOFTWARE'] = signature os.environ['SERVER_SOFTWARE'] = signature
res = self.request('/cgi-bin/file1.py') res = self.request('/cgi-bin/file1.py')
self.assertEqual((b'Hello World\n', 'text/html', 200), self.assertEqual((b'Hello World' + self.linesep, 'text/html', 200),
(res.read(), res.getheader('Content-type'), res.status)) (res.read(), res.getheader('Content-type'), res.status))
self.assertEqual(os.environ['SERVER_SOFTWARE'], signature) self.assertEqual(os.environ['SERVER_SOFTWARE'], signature)