Tests: Python exception tests.
This commit is contained in:
45
test/python/iter_exception/wsgi.py
Normal file
45
test/python/iter_exception/wsgi.py
Normal file
@@ -0,0 +1,45 @@
|
||||
class application:
|
||||
def __init__(self, environ, start_response):
|
||||
self.environ = environ
|
||||
self.start = start_response
|
||||
|
||||
self.next = self.__next__
|
||||
|
||||
def __iter__(self):
|
||||
self.__i = 0
|
||||
self._skip_level = int(self.environ.get('HTTP_X_SKIP', 0))
|
||||
self._not_skip_close = int(self.environ.get('HTTP_X_NOT_SKIP_CLOSE', 0))
|
||||
self._is_chunked = self.environ.get('HTTP_X_CHUNKED')
|
||||
|
||||
headers = [(('Content-Length', '10'))]
|
||||
if self._is_chunked is not None:
|
||||
headers = []
|
||||
|
||||
if self._skip_level < 1:
|
||||
raise Exception('first exception')
|
||||
|
||||
write = self.start('200', headers)
|
||||
|
||||
if self._skip_level < 2:
|
||||
raise Exception('second exception')
|
||||
|
||||
write(b'XXXXX')
|
||||
|
||||
if self._skip_level < 3:
|
||||
raise Exception('third exception')
|
||||
|
||||
return self
|
||||
|
||||
def __next__(self):
|
||||
if self._skip_level < 4:
|
||||
raise Exception('next exception')
|
||||
|
||||
self.__i += 1
|
||||
if self.__i > 2:
|
||||
raise StopIteration
|
||||
|
||||
return b'X'
|
||||
|
||||
def close(self):
|
||||
if self._not_skip_close == 1:
|
||||
raise Exception('close exception')
|
||||
Reference in New Issue
Block a user