D948: run-tests: extract Popen logic to a single method

quark (Jun Wu) phabricator at mercurial-scm.org
Thu Oct 5 04:22:28 UTC 2017


quark created this revision.
Herald added a subscriber: mercurial-devel.
Herald added a reviewer: hg-reviewers.

REVISION SUMMARY
  This removes 3 lines in total LOC and makes the upcoming changes easier.

REPOSITORY
  rHG Mercurial

REVISION DETAIL
  https://phab.mercurial-scm.org/D948

AFFECTED FILES
  tests/run-tests.py

CHANGE DETAILS

diff --git a/tests/run-tests.py b/tests/run-tests.py
--- a/tests/run-tests.py
+++ b/tests/run-tests.py
@@ -2103,15 +2103,16 @@
         bisectrepo = self._runner.options.bisect_repo
         if bisectrepo:
             bisectcmd.extend(['-R', os.path.abspath(bisectrepo)])
-        def nooutput(args):
+        def pread(args):
             p = subprocess.Popen(args, stderr=subprocess.STDOUT,
                                  stdout=subprocess.PIPE)
-            p.stdout.read()
+            data = p.stdout.read()
             p.wait()
+            return data
         for test in tests:
-            nooutput(bisectcmd + ['--reset']),
-            nooutput(bisectcmd + ['--bad', '.'])
-            nooutput(bisectcmd + ['--good',
+            pread(bisectcmd + ['--reset']),
+            pread(bisectcmd + ['--bad', '.'])
+            pread(bisectcmd + ['--good',
                       self._runner.options.known_good_rev])
             # TODO: we probably need to forward more options
             # that alter hg's behavior inside the tests.
@@ -2121,11 +2122,7 @@
                 opts += ' --with-hg=%s ' % shellquote(_strpath(withhg))
             rtc = '%s %s %s %s' % (sys.executable, sys.argv[0], opts,
                                    test)
-            sub = subprocess.Popen(bisectcmd + ['--command', rtc],
-                                   stderr=subprocess.STDOUT,
-                                   stdout=subprocess.PIPE)
-            data = sub.stdout.read()
-            sub.wait()
+            data = pread(bisectcmd + ['--command', rtc])
             m = re.search(
                 (br'\nThe first (?P<goodbad>bad|good) revision '
                  br'is:\nchangeset: +\d+:(?P<node>[a-f0-9]+)\n.*\n'



To: quark, #hg-reviewers
Cc: mercurial-devel


More information about the Mercurial-devel mailing list