Tests: added Python input readline and iterator tests.

This commit is contained in:
Max Romanov
2020-03-12 17:54:15 +03:00
parent 7c4db34b88
commit f3e6726098
5 changed files with 125 additions and 6 deletions

View File

@@ -1,5 +1,16 @@
def application(environ, start_response):
body = bytes(environ['wsgi.input'].__iter__())
body = []
content_length = 0
start_response('200', [('Content-Length', str(len(body)))])
return [body]
for l in environ['wsgi.input'].__iter__():
body.append(l)
content_length += len(l)
start_response(
'200',
[
('Content-Length', str(content_length)),
('X-Lines-Count', str(len(body))),
],
)
return body

View File

@@ -0,0 +1,20 @@
def application(environ, start_response):
body = []
content_length = 0
while True:
l = environ['wsgi.input'].readline()
if not l:
break
body.append(l)
content_length += len(l)
start_response(
'200',
[
('Content-Length', str(content_length)),
('X-Lines-Count', str(len(body))),
],
)
return body

View File

@@ -0,0 +1,16 @@
def application(environ, start_response):
body = []
while True:
l = environ['wsgi.input'].readline(9)
if not l:
break
body.append(l)
if len(l) > 9:
body.append(b'len(l) > 9: ' + l)
break
start_response('200', [('X-Lines-Count', str(len(body)))])
return body

View File

@@ -0,0 +1,5 @@
def application(environ, start_response):
body = environ['wsgi.input'].readlines()
start_response('200', [('X-Lines-Count', str(len(body)))])
return body

View File

@@ -384,13 +384,80 @@ Connection: close
self.assertEqual(self.get()['status'], 500, 'start response exit')
@unittest.skip('not yet')
def test_python_application_input_iter(self):
self.load('input_iter')
body = '0123456789'
body = '''0123456789
next line
self.assertEqual(self.post(body=body)['body'], body, 'input iter')
last line'''
resp = self.post(body=body)
self.assertEqual(resp['body'], body, 'input iter')
self.assertEqual(
resp['headers']['X-Lines-Count'], '4', 'input iter lines'
)
def test_python_application_input_readline(self):
self.load('input_readline')
body = '''0123456789
next line
last line'''
resp = self.post(body=body)
self.assertEqual(resp['body'], body, 'input readline')
self.assertEqual(
resp['headers']['X-Lines-Count'], '4', 'input readline lines'
)
def test_python_application_input_readline_size(self):
self.load('input_readline_size')
body = '''0123456789
next line
last line'''
self.assertEqual(
self.post(body=body)['body'], body, 'input readline size'
)
self.assertEqual(
self.post(body='0123')['body'], '0123', 'input readline size less'
)
def test_python_application_input_readlines(self):
self.load('input_readlines')
body = '''0123456789
next line
last line'''
resp = self.post(body=body)
self.assertEqual(resp['body'], body, 'input readlines')
self.assertEqual(
resp['headers']['X-Lines-Count'], '4', 'input readlines lines'
)
def test_python_application_input_readlines_huge(self):
self.load('input_readlines')
body = (
'''0123456789 abcdefghi
next line: 0123456789 abcdefghi
last line: 987654321
'''
* 512
)
self.assertEqual(
self.post(body=body, read_buffer_size=16384)['body'],
body,
'input readlines huge',
)
def test_python_application_input_read_length(self):
self.load('input_read_length')