Commit 87f16f89 authored by Victor Stinner's avatar Victor Stinner

Issue #21163, asyncio: Fix some "Task was destroyed but it is pending!" logs in tests

parent 36820b6e
...@@ -783,6 +783,7 @@ class SemaphoreTests(test_utils.TestCase): ...@@ -783,6 +783,7 @@ class SemaphoreTests(test_utils.TestCase):
# cleanup locked semaphore # cleanup locked semaphore
sem.release() sem.release()
self.loop.run_until_complete(t4)
def test_acquire_cancel(self): def test_acquire_cancel(self):
sem = asyncio.Semaphore(loop=self.loop) sem = asyncio.Semaphore(loop=self.loop)
......
...@@ -362,16 +362,21 @@ class QueuePutTests(_QueueTestBase): ...@@ -362,16 +362,21 @@ class QueuePutTests(_QueueTestBase):
def test_put_cancelled_race(self): def test_put_cancelled_race(self):
q = asyncio.Queue(loop=self.loop, maxsize=1) q = asyncio.Queue(loop=self.loop, maxsize=1)
asyncio.Task(q.put('a'), loop=self.loop) put_a = asyncio.Task(q.put('a'), loop=self.loop)
asyncio.Task(q.put('c'), loop=self.loop) put_b = asyncio.Task(q.put('b'), loop=self.loop)
t = asyncio.Task(q.put('b'), loop=self.loop) put_c = asyncio.Task(q.put('X'), loop=self.loop)
test_utils.run_briefly(self.loop) test_utils.run_briefly(self.loop)
t.cancel() self.assertTrue(put_a.done())
self.assertFalse(put_b.done())
put_c.cancel()
test_utils.run_briefly(self.loop) test_utils.run_briefly(self.loop)
self.assertTrue(t.done()) self.assertTrue(put_c.done())
self.assertEqual(q.get_nowait(), 'a') self.assertEqual(q.get_nowait(), 'a')
self.assertEqual(q.get_nowait(), 'c') self.assertEqual(q.get_nowait(), 'b')
self.loop.run_until_complete(put_b)
def test_put_with_waiting_getters(self): def test_put_with_waiting_getters(self):
q = asyncio.Queue(loop=self.loop) q = asyncio.Queue(loop=self.loop)
...@@ -431,18 +436,20 @@ class JoinableQueueTests(_QueueTestBase): ...@@ -431,18 +436,20 @@ class JoinableQueueTests(_QueueTestBase):
@asyncio.coroutine @asyncio.coroutine
def test(): def test():
for _ in range(2): tasks = [asyncio.Task(worker(), loop=self.loop)
asyncio.Task(worker(), loop=self.loop) for index in range(2)]
yield from q.join() yield from q.join()
return tasks
self.loop.run_until_complete(test()) tasks = self.loop.run_until_complete(test())
self.assertEqual(sum(range(100)), accumulator) self.assertEqual(sum(range(100)), accumulator)
# close running generators # close running generators
running = False running = False
for i in range(2): for i in range(len(tasks)):
q.put_nowait(0) q.put_nowait(0)
self.loop.run_until_complete(asyncio.wait(tasks, loop=self.loop))
def test_join_empty_queue(self): def test_join_empty_queue(self):
q = asyncio.JoinableQueue(loop=self.loop) q = asyncio.JoinableQueue(loop=self.loop)
......
...@@ -1763,16 +1763,14 @@ class CoroutineGatherTests(GatherTestsBase, test_utils.TestCase): ...@@ -1763,16 +1763,14 @@ class CoroutineGatherTests(GatherTestsBase, test_utils.TestCase):
gen2 = coro() gen2 = coro()
fut = asyncio.gather(gen1, gen2) fut = asyncio.gather(gen1, gen2)
self.assertIs(fut._loop, self.one_loop) self.assertIs(fut._loop, self.one_loop)
gen1.close() self.one_loop.run_until_complete(fut)
gen2.close()
self.set_event_loop(self.other_loop, cleanup=False) self.set_event_loop(self.other_loop, cleanup=False)
gen3 = coro() gen3 = coro()
gen4 = coro() gen4 = coro()
fut = asyncio.gather(gen3, gen4, loop=self.other_loop) fut2 = asyncio.gather(gen3, gen4, loop=self.other_loop)
self.assertIs(fut._loop, self.other_loop) self.assertIs(fut2._loop, self.other_loop)
gen3.close() self.other_loop.run_until_complete(fut2)
gen4.close()
def test_duplicate_coroutines(self): def test_duplicate_coroutines(self):
@asyncio.coroutine @asyncio.coroutine
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment