diff -r ad65626d3b1a tests/test_queues.py --- a/tests/test_queues.py Fri Mar 27 15:19:22 2015 +0100 +++ b/tests/test_queues.py Mon Mar 30 14:38:36 2015 +0100 @@ -322,6 +322,34 @@ q.put_nowait(1) self.assertEqual(1, q.get_nowait()) + def test_put_cancel_drop(self): + def gen(): + yield 0.01 + yield 0.1 + + loop = self.new_test_loop(gen) + + q = asyncio.Queue(loop=loop) + + reader = loop.create_task(q.get()) + + loop.run_until_complete(asyncio.sleep(0.01, loop=loop)) + + q.put_nowait(1) + q.put_nowait(2) + reader.cancel() + + try: + loop.run_until_complete(reader) + except asyncio.CancelledError: + # try again + reader = loop.create_task(q.get()) + loop.run_until_complete(reader) + + result = reader.result() + # if we get 2, it means 1 got dropped! + self.assertEqual(1, result) + def test_nonblocking_put_exception(self): q = asyncio.Queue(maxsize=1, loop=self.loop) q.put_nowait(1)