Tests: added Python test with iterator context.

This commit is contained in:
Andrey Zelenkov
2018-04-02 17:03:41 +03:00
parent 001af51122
commit efb71121b9
2 changed files with 46 additions and 0 deletions

View File

@@ -0,0 +1,23 @@
import atexit
class application:
def __init__(self, environ, start_response):
self.environ = environ
self.start = start_response
def __iter__(self):
atexit.register(self._atexit)
content_length = int(self.environ.get('CONTENT_LENGTH', 0))
body = bytes(self.environ['wsgi.input'].read(content_length))
self.start('200', [
('Content-Type', self.environ.get('CONTENT_TYPE')),
('Content-Length', str(len(body)))
])
yield body
def _atexit(self):
self.start('200', [
('Content-Length', '0')
])

View File

@@ -60,5 +60,28 @@ class TestUnitPythonApplication(unit.TestUnitApplicationPython):
self.assertNotIn('Transfer-Encoding', self.get()['headers'], self.assertNotIn('Transfer-Encoding', self.get()['headers'],
'204 header transfer encoding') '204 header transfer encoding')
def test_python_application_ctx_iter_atexit(self):
self.skip_alerts.append(r'sendmsg.+failed')
self.load('ctx_iter_atexit')
resp = self.post(headers={
'Connection': 'close',
'Content-Type': 'text/html',
'Host': 'localhost'
}, body='0123456789')
self.assertEqual(resp['status'], 200, 'ctx iter status')
self.assertEqual(resp['body'], '0123456789', 'ctx iter body')
self.conf({
"listeners": {},
"applications": {}
})
self.stop()
self.assertIsNotNone(self.search_in_log(r'RuntimeError'),
'ctx iter atexit')
if __name__ == '__main__': if __name__ == '__main__':
unittest.main() unittest.main()