diff options
author | Max Romanov <max.romanov@nginx.com> | 2020-03-12 17:54:15 +0300 |
---|---|---|
committer | Max Romanov <max.romanov@nginx.com> | 2020-03-12 17:54:15 +0300 |
commit | f3e6726098220701dc2193c440852d04508cf972 (patch) | |
tree | 21bc37225ad2c556d0c67520be797fcd8359fc4f | |
parent | 7c4db34b88eab0b468425186e9b3366081e24fbb (diff) | |
download | unit-f3e6726098220701dc2193c440852d04508cf972.tar.gz unit-f3e6726098220701dc2193c440852d04508cf972.tar.bz2 |
Tests: added Python input readline and iterator tests.
-rw-r--r-- | test/python/input_iter/wsgi.py | 17 | ||||
-rw-r--r-- | test/python/input_readline/wsgi.py | 20 | ||||
-rw-r--r-- | test/python/input_readline_size/wsgi.py | 16 | ||||
-rw-r--r-- | test/python/input_readlines/wsgi.py | 5 | ||||
-rw-r--r-- | test/test_python_application.py | 73 |
5 files changed, 125 insertions, 6 deletions
diff --git a/test/python/input_iter/wsgi.py b/test/python/input_iter/wsgi.py index d3bf437f..04a6a06c 100644 --- a/test/python/input_iter/wsgi.py +++ b/test/python/input_iter/wsgi.py @@ -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 diff --git a/test/python/input_readline/wsgi.py b/test/python/input_readline/wsgi.py new file mode 100644 index 00000000..ec42e0c8 --- /dev/null +++ b/test/python/input_readline/wsgi.py @@ -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 diff --git a/test/python/input_readline_size/wsgi.py b/test/python/input_readline_size/wsgi.py new file mode 100644 index 00000000..36cf07b0 --- /dev/null +++ b/test/python/input_readline_size/wsgi.py @@ -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 diff --git a/test/python/input_readlines/wsgi.py b/test/python/input_readlines/wsgi.py new file mode 100644 index 00000000..64b03d79 --- /dev/null +++ b/test/python/input_readlines/wsgi.py @@ -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 diff --git a/test/test_python_application.py b/test/test_python_application.py index 818816d0..460cc804 100644 --- a/test/test_python_application.py +++ b/test/test_python_application.py @@ -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 + +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 - self.assertEqual(self.post(body=body)['body'], body, 'input iter') +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') |