summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMarc Abramowitz <marc@marc-abramowitz.com>2016-03-08 10:05:17 -0800
committerMarc Abramowitz <marc@marc-abramowitz.com>2016-03-08 10:05:17 -0800
commit0bf670c2e5d30c6b49cd08ba1d09fc26593b477f (patch)
tree3f7e69a192c1d75dd354792dfa5e88350fc3d40a
parent9f7886e8abed85c72415241b8496d614c0e4dd24 (diff)
parent420a3be2b848b7f2c91f3d007d012d0e488e62f9 (diff)
downloadpaste-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.py6
-rw-r--r--tests/test_wsgilib.py52
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