summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorSergey Shepelev <temotor@gmail.com>2017-04-26 01:20:37 +0300
committerSergey Shepelev <temotor@gmail.com>2017-04-26 01:20:37 +0300
commit0daf3e9da421088e15fb4540302af55a84b8eaf1 (patch)
tree3e41945271b15689c812c179f0c4cea029a99787
parent38fd8a71314dce709eaaaf5eb2db39768a5461c6 (diff)
downloadeventlet-0daf3e9da421088e15fb4540302af55a84b8eaf1.tar.gz
queue: empty except was catching too much
https://github.com/eventlet/eventlet/issues/407
-rw-r--r--eventlet/queue.py4
-rw-r--r--tests/queue_test.py29
2 files changed, 22 insertions, 11 deletions
diff --git a/eventlet/queue.py b/eventlet/queue.py
index 31248db..34d9d08 100644
--- a/eventlet/queue.py
+++ b/eventlet/queue.py
@@ -116,7 +116,7 @@ class Waiter(object):
if self.greenlet is not None:
try:
self.greenlet.switch(value)
- except:
+ except Exception:
traceback.print_exc()
def throw(self, *throw_args):
@@ -128,7 +128,7 @@ class Waiter(object):
if self.greenlet is not None:
try:
self.greenlet.throw(*throw_args)
- except:
+ except Exception:
traceback.print_exc()
# XXX should be renamed to get() ? and the whole class is called Receiver?
diff --git a/tests/queue_test.py b/tests/queue_test.py
index ecbe85b..da11cb7 100644
--- a/tests/queue_test.py
+++ b/tests/queue_test.py
@@ -1,6 +1,6 @@
import eventlet
from eventlet import event, hubs, queue
-from tests import LimitedTestCase, main
+import tests
def do_bail(q):
@@ -12,7 +12,7 @@ def do_bail(q):
return 'timed out'
-class TestQueue(LimitedTestCase):
+class TestQueue(tests.LimitedTestCase):
def test_send_first(self):
q = eventlet.Queue()
q.put('hi')
@@ -246,7 +246,7 @@ class TestQueue(LimitedTestCase):
self.assertRaises(queue.Empty, c.get_nowait)
def test_task_done(self):
- channel = queue.Queue(0)
+ channel = eventlet.Queue(0)
X = object()
gt = eventlet.spawn(channel.put, X)
result = channel.get()
@@ -268,7 +268,7 @@ def store_result(result, func, *args):
result.append(exc)
-class TestNoWait(LimitedTestCase):
+class TestNoWait(tests.LimitedTestCase):
def test_put_nowait_simple(self):
hub = hubs.get_hub()
result = []
@@ -284,7 +284,7 @@ class TestNoWait(LimitedTestCase):
def test_get_nowait_simple(self):
hub = hubs.get_hub()
result = []
- q = queue.Queue(1)
+ q = eventlet.Queue(1)
q.put(4)
hub.schedule_call_global(0, store_result, result, q.get_nowait)
hub.schedule_call_global(0, store_result, result, q.get_nowait)
@@ -297,7 +297,7 @@ class TestNoWait(LimitedTestCase):
def test_get_nowait_unlock(self):
hub = hubs.get_hub()
result = []
- q = queue.Queue(0)
+ q = eventlet.Queue(0)
p = eventlet.spawn(q.put, 5)
assert q.empty(), q
assert q.full(), q
@@ -318,7 +318,7 @@ class TestNoWait(LimitedTestCase):
def test_put_nowait_unlock(self):
hub = hubs.get_hub()
result = []
- q = queue.Queue(0)
+ q = eventlet.Queue(0)
eventlet.spawn(q.get)
assert q.empty(), q
assert q.full(), q
@@ -335,6 +335,17 @@ class TestNoWait(LimitedTestCase):
assert q.full(), q
assert q.empty(), q
+ def test_wait_except(self):
+ # https://github.com/eventlet/eventlet/issues/407
+ q = eventlet.Queue()
+
+ def get():
+ q.get()
+ raise KeyboardInterrupt
+
+ eventlet.spawn(get)
+ eventlet.sleep()
-if __name__ == '__main__':
- main()
+ with tests.assert_raises(KeyboardInterrupt):
+ q.put(None)
+ eventlet.sleep()