commit:     0552665627bf85f01ae28cafebc885dcb6d26ef3
Author:     Zac Medico <zmedico <AT> gentoo <DOT> org>
AuthorDate: Sun Mar  8 07:31:08 2020 +0000
Commit:     Zac Medico <zmedico <AT> gentoo <DOT> org>
CommitDate: Sun Mar  8 07:31:50 2020 +0000
URL:        https://gitweb.gentoo.org/proj/portage.git/commit/?id=05526656

SimpleEmergeTestCase: run tests in coroutine method

Signed-off-by: Zac Medico <zmedico <AT> gentoo.org>

 lib/portage/tests/emerge/test_simple.py | 25 ++++++++++++++++++-------
 1 file changed, 18 insertions(+), 7 deletions(-)

diff --git a/lib/portage/tests/emerge/test_simple.py 
b/lib/portage/tests/emerge/test_simple.py
index f5cd6f3d2..6aafff180 100644
--- a/lib/portage/tests/emerge/test_simple.py
+++ b/lib/portage/tests/emerge/test_simple.py
@@ -1,4 +1,4 @@
-# Copyright 2011-2019 Gentoo Authors
+# Copyright 2011-2020 Gentoo Authors
 # Distributed under the terms of the GNU General Public License v2
 
 import subprocess
@@ -14,6 +14,9 @@ from portage.tests import TestCase
 from portage.tests.resolver.ResolverPlayground import ResolverPlayground
 from portage.util import (ensure_dirs, find_updated_config_files,
        shlex_split)
+from portage.util.futures import asyncio
+from portage.util.futures.compat_coroutine import coroutine
+
 
 class SimpleEmergeTestCase(TestCase):
 
@@ -201,6 +204,15 @@ call_has_and_best_version() {
 
                playground = ResolverPlayground(
                        ebuilds=ebuilds, installed=installed, debug=debug)
+
+               loop = asyncio._wrap_loop()
+               loop.run_until_complete(asyncio.ensure_future(
+                       self._async_test_simple(playground, 
metadata_xml_files), loop=loop))
+
+       @coroutine
+       def _async_test_simple(self, playground, metadata_xml_files):
+
+               debug = playground.debug
                settings = playground.settings
                eprefix = settings["EPREFIX"]
                eroot = settings["EROOT"]
@@ -487,15 +499,14 @@ move dev-util/git dev-vcs/git
                                else:
                                        local_env = env
 
-                               proc = subprocess.Popen(args,
-                                       env=local_env, stdout=stdout)
+                               proc = yield 
asyncio.create_subprocess_exec(*args,
+                                       env=local_env, stderr=None, 
stdout=stdout)
 
                                if debug:
-                                       proc.wait()
+                                       yield proc.wait()
                                else:
-                                       output = proc.stdout.readlines()
-                                       proc.wait()
-                                       proc.stdout.close()
+                                       output, _err = yield proc.communicate()
+                                       yield proc.wait()
                                        if proc.returncode != os.EX_OK:
                                                for line in output:
                                                        
sys.stderr.write(_unicode_decode(line))

Reply via email to