middleware: don't barf when wrapped generater yields no items.
Fixes: http://bugs.repoze.org/issue184
| | |
| | | Unreleased |
| | | ---------- |
| | | |
| | | - middleware: avoid UnboundLocalError when wrapped generater yields no |
| | | items. See: http://bugs.repoze.org/issue184 |
| | | |
| | | - Make cookie expiration date RFC-2616 compliant (independent of locale, |
| | | including 'GMT' zone). See https://github.com/repoze/repoze.who/pull/11 |
| | | |
| | |
| | | close = getattr(result, 'close', lambda: None) |
| | | # Neat trick to pull the first iteration only. We need to do this outside |
| | | # of the generator function to ensure it is called. |
| | | first = marker = [] |
| | | for iter in result: |
| | | first = iter |
| | | break |
| | |
| | | # Wrapper yields the first iteration, then passes result's iterations |
| | | # directly up. |
| | | def wrapper(): |
| | | yield first |
| | | if first is not marker: |
| | | yield first |
| | | for iter in result: |
| | | # We'll let result's StopIteration bubble up directly. |
| | | yield iter |
| | |
| | | self.assertEqual(L, ['yo!']) |
| | | self.assertEqual(list(newgen), ['a', 'b']) |
| | | |
| | | def test_w_empty_generator(self): |
| | | def gen(): |
| | | if False: |
| | | yield 'a' |
| | | newgen = self._callFUT(gen()) |
| | | self.assertEqual(list(newgen), []) |
| | | |
| | | def test_w_iterator_having_close(self): |
| | | def gen(): |
| | | yield 'a' |