diff options
author | Marc Abramowitz <marc@marc-abramowitz.com> | 2016-03-08 10:05:17 -0800 |
---|---|---|
committer | Marc Abramowitz <marc@marc-abramowitz.com> | 2016-03-08 10:05:17 -0800 |
commit | 0bf670c2e5d30c6b49cd08ba1d09fc26593b477f (patch) | |
tree | 3f7e69a192c1d75dd354792dfa5e88350fc3d40a | |
parent | 9f7886e8abed85c72415241b8496d614c0e4dd24 (diff) | |
parent | 420a3be2b848b7f2c91f3d007d012d0e488e62f9 (diff) | |
download | paste-0bf670c2e5d30c6b49cd08ba1d09fc26593b477f.tar.gz |
Merged in msabramo/paste/python3_wsgilib_add_close_next (pull request #29)
paste.wsgilib.add_close: Add __next__ method
-rw-r--r-- | paste/wsgilib.py | 6 | ||||
-rw-r--r-- | tests/test_wsgilib.py | 52 |
2 files changed, 57 insertions, 1 deletions
diff --git a/paste/wsgilib.py b/paste/wsgilib.py index 98299e2..d5862e7 100644 --- a/paste/wsgilib.py +++ b/paste/wsgilib.py @@ -44,7 +44,11 @@ class add_close(object): return self def next(self): - return self.app_iter.next() + return self.__next__() + + # Python 3 uses __next__ instead of next + def __next__(self): + return next(self.app_iter) def close(self): self._closed = True diff --git a/tests/test_wsgilib.py b/tests/test_wsgilib.py new file mode 100644 index 0000000..72573cf --- /dev/null +++ b/tests/test_wsgilib.py @@ -0,0 +1,52 @@ +from paste.wsgilib import add_close + + +def app_iterable_func_bytes(): + yield b'a' + yield b'b' + yield b'c' + + +def app_iterable_func_unicode(): + yield b'a'.decode('ascii') + yield b'b'.decode('ascii') + yield b'c'.decode('ascii') + + +def close_func(): + global close_func_called + close_func_called = True + + +def test_add_close_bytes(): + global close_func_called + + close_func_called = False + lst = [] + app_iterable = app_iterable_func_bytes() + + obj = add_close(app_iterable, close_func) + for x in obj: + lst.append(x) + obj.close() + + assert lst == [b'a', b'b', b'c'] + assert close_func_called + assert obj._closed + + +def test_add_close_unicode(): + global close_func_called + + close_func_called = False + lst = [] + app_iterable = app_iterable_func_unicode() + + obj = add_close(app_iterable, close_func) + for x in obj: + lst.append(x) + obj.close() + + assert lst == ['a', 'b', 'c'] + assert close_func_called + assert obj._closed |