[pypy-dev] [pypy-svn] pypy commit 7b8aa74da1fb: Handle output on standard error when invoking Mercurial.
Maciej Fijalkowski
fijall at gmail.com
Tue Dec 14 20:01:39 CET 2010
This commit contains no tests whatsoever, it would be cooler if it did.
On Tue, Dec 14, 2010 at 8:19 PM, Bitbucket
<commits-noreply at bitbucket.org> wrote:
> # 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:
> _______________________________________________
> pypy-svn mailing list
> pypy-svn at codespeak.net
> http://codespeak.net/mailman/listinfo/pypy-svn
>
More information about the Pypy-dev
mailing list