[pypy-commit] pypy default: Improve the output of "pypy --info" to follow the style output by
arigo
noreply at buildbot.pypy.org
Wed May 9 09:04:38 CEST 2012
Author: Armin Rigo <arigo at tunes.org>
Branch:
Changeset: r54980:51326a2c5f7b
Date: 2012-05-09 09:02 +0200
http://bitbucket.org/pypy/pypy/changeset/51326a2c5f7b/
Log: Improve the output of "pypy --info" to follow the style output by
translate.py. It still prints all options instead of the non-
default ones, but maybe it's not a bad idea anyway.
diff --git a/pypy/translator/goal/app_main.py b/pypy/translator/goal/app_main.py
--- a/pypy/translator/goal/app_main.py
+++ b/pypy/translator/goal/app_main.py
@@ -121,8 +121,18 @@
else:
optitems = options.items()
optitems.sort()
- for name, value in optitems:
- print ' %51s: %s' % (name, value)
+ current = []
+ for key, value in optitems:
+ group = key.split('.')
+ name = group.pop()
+ n = 0
+ while n < min(len(current), len(group)) and current[n] == group[n]:
+ n += 1
+ while n < len(group):
+ print '%s[%s]' % (' ' * n, group[n])
+ n += 1
+ print '%s%s = %r' % (' ' * n, name, value)
+ current = group
raise SystemExit
def print_help(*args):
diff --git a/pypy/translator/goal/test2/test_app_main.py b/pypy/translator/goal/test2/test_app_main.py
--- a/pypy/translator/goal/test2/test_app_main.py
+++ b/pypy/translator/goal/test2/test_app_main.py
@@ -787,6 +787,37 @@
assert data.startswith("15\xe2\x82\xac")
+class TestAppMain:
+
+ def test_print_info(self):
+ from pypy.translator.goal import app_main
+ import sys, cStringIO
+ prev_so = sys.stdout
+ prev_ti = getattr(sys, 'pypy_translation_info', 'missing')
+ sys.pypy_translation_info = {
+ 'translation.foo': True,
+ 'translation.bar': 42,
+ 'translation.egg.something': None,
+ 'objspace.x': 'hello',
+ }
+ try:
+ sys.stdout = f = cStringIO.StringIO()
+ py.test.raises(SystemExit, app_main.print_info)
+ finally:
+ sys.stdout = prev_so
+ if prev_ti == 'missing':
+ del sys.pypy_translation_info
+ else:
+ sys.pypy_translation_info = prev_ti
+ assert f.getvalue() == ("[objspace]\n"
+ " x = 'hello'\n"
+ "[translation]\n"
+ " bar = 42\n"
+ " [egg]\n"
+ " something = None\n"
+ " foo = True\n")
+
+
class AppTestAppMain:
def setup_class(self):
More information about the pypy-commit
mailing list