Gentoo Archives: gentoo-commits

From: Zac Medico <zmedico@g.o>
To: gentoo-commits@l.g.o
Subject: [gentoo-commits] proj/portage:master commit in: lib/portage/tests/util/futures/, lib/portage/util/futures/
Date: Mon, 03 Sep 2018 20:23:16
Message-Id: 1536006040.b37256a524a0fbf88ffad20c9f01aaf37409ec66.zmedico@gentoo
1 commit: b37256a524a0fbf88ffad20c9f01aaf37409ec66
2 Author: Zac Medico <zmedico <AT> gentoo <DOT> org>
3 AuthorDate: Mon Sep 3 20:16:37 2018 +0000
4 Commit: Zac Medico <zmedico <AT> gentoo <DOT> org>
5 CommitDate: Mon Sep 3 20:20:40 2018 +0000
6 URL: https://gitweb.gentoo.org/proj/portage.git/commit/?id=b37256a5
7
8 compat_coroutine: CancelledError cancels coroutine's future
9
10 lib/portage/tests/util/futures/test_compat_coroutine.py | 8 ++++++--
11 lib/portage/util/futures/compat_coroutine.py | 2 ++
12 2 files changed, 8 insertions(+), 2 deletions(-)
13
14 diff --git a/lib/portage/tests/util/futures/test_compat_coroutine.py b/lib/portage/tests/util/futures/test_compat_coroutine.py
15 index cbc070869..b6f75b1a2 100644
16 --- a/lib/portage/tests/util/futures/test_compat_coroutine.py
17 +++ b/lib/portage/tests/util/futures/test_compat_coroutine.py
18 @@ -71,6 +71,10 @@ class CompatCoroutineTestCase(TestCase):
19 loop.run_until_complete, future)
20
21 def test_cancelled_future(self):
22 + """
23 + When a coroutine raises CancelledError, the coroutine's
24 + future is cancelled.
25 + """
26
27 @coroutine
28 def cancelled_future_coroutine(loop=None):
29 @@ -81,8 +85,8 @@ class CompatCoroutineTestCase(TestCase):
30 yield future
31
32 loop = asyncio.get_event_loop()
33 - self.assertRaises(asyncio.CancelledError,
34 - loop.run_until_complete, cancelled_future_coroutine(loop=loop))
35 + future = loop.run_until_complete(asyncio.wait([cancelled_future_coroutine()]))[0].pop()
36 + self.assertTrue(future.cancelled())
37
38 def test_yield_expression_result(self):
39 @coroutine
40
41 diff --git a/lib/portage/util/futures/compat_coroutine.py b/lib/portage/util/futures/compat_coroutine.py
42 index 59fdc31b6..3edfa6bee 100644
43 --- a/lib/portage/util/futures/compat_coroutine.py
44 +++ b/lib/portage/util/futures/compat_coroutine.py
45 @@ -102,6 +102,8 @@ class _GeneratorTask(object):
46 self._generator.throw(previous.exception())
47 future = next(self._generator)
48
49 + except asyncio.CancelledError:
50 + self._result.cancel()
51 except _CoroutineReturnValue as e:
52 if not self._result.cancelled():
53 self._result.set_result(e.result)