[pypy-svn] pypy commit 7b8aa74da1fb: Handle output on standard error when invoking Mercurial.

Bitbucket commits-noreply at bitbucket.org
Tue Dec 14 19:19:46 CET 2010


# HG changeset patch -- Bitbucket.org
# Project pypy
# URL http://bitbucket.org/pypy/pypy/overview
# User Dan Villiom Podlaski Christiansen <danchr at gmail.com>
# Date 1292349796 -3600
# Node ID 7b8aa74da1fb06bd5af8b37e086538e4e7d5d0a1
# Parent  1f81ed99bfbc17bbb3cc0920ac612218b4194f8c
Handle output on standard error when invoking Mercurial.

Instead of just piped to the process standard error, we use a logger
to warn if 'hg' wrote anything on stderr.

--- a/pypy/tool/version.py
+++ b/pypy/tool/version.py
@@ -13,24 +13,39 @@ def get_mercurial_info():
     hgexe = py.path.local.sysfind('hg')
 
     if hgexe and os.path.isdir(os.path.join(pypyroot, '.hg')):
+        def maywarn(err):
+            if not err:
+                return
+
+            from pypy.tool.ansi_print import ansi_log
+            log = py.log.Producer("version")
+            py.log.setconsumer("version", ansi_log)
+            log.WARNING('Errors getting Mercurial information:' + err)
+
         env = dict(os.environ)
         # get Mercurial into scripting mode
         env['HGPLAIN'] = '1'
         # disable user configuration, extensions, etc.
         env['HGRCPATH'] = os.devnull
 
-        p = Popen([str(hgexe), 'id', '-i', pypyroot], stdout=PIPE, env=env)
+        p = Popen([str(hgexe), 'id', '-i', pypyroot],
+                  stdout=PIPE, stderr=PIPE, env=env)
         hgid = p.stdout.read().strip()
+        maywarn(p.stderr.read())
 
-        p = Popen([str(hgexe), 'id', '-t', pypyroot], stdout=PIPE, env=env)
+        p = Popen([str(hgexe), 'id', '-t', pypyroot],
+                  stdout=PIPE, stderr=PIPE, env=env)
         hgtags = [t for t in p.stdout.read().strip().split() if t != 'tip']
+        maywarn(p.stderr.read())
 
         if hgtags:
             return 'PyPy', hgtags[0], hgid
         else:
             # use the branch instead
-            p = Popen([str(hgexe), 'id', '-b', pypyroot], stdout=PIPE, env=env)
+            p = Popen([str(hgexe), 'id', '-b', pypyroot],
+                      stdout=PIPE, stderr=PIPE, env=env)
             hgbranch = p.stdout.read().strip()
+            maywarn(p.stderr.read())
 
             return 'PyPy', hgbranch, hgid
     else:



More information about the Pypy-commit mailing list