From: Dylan Baker <[email protected]> This adds a function to grouptools that replaces grouptools.SEPARATOR with '/'. This function is meant for use when printing to the console, since most people find '/' easier to read than whatever is being used internally to separate a group, and because consistance counts.
The implementation differs from that originally used in console_.py, this implementation (tested on python 2.7.10) is roughly twice as fast. Signed-off-by: Dylan Baker <[email protected]> --- For those wondering about the 2x performance gain I mention, you can run this script to see the difference: """ from __future__ import absolute_import, division, print_function import timeit SEPARATOR = '@' TESTSTRING = 'foo@bar@boink@foo@john' print('split-join') print(timeit.timeit(lambda: '/'.join(TESTSTRING.split(SEPARATOR)))) print('replace') print(timeit.timeit(lambda: TESTSTRING.replace(SEPARATOR, '/'))) """ framework/grouptools.py | 17 +++++++++++++++++ framework/summary/console_.py | 2 +- framework/tests/grouptools_tests.py | 7 +++++++ 3 files changed, 25 insertions(+), 1 deletion(-) diff --git a/framework/grouptools.py b/framework/grouptools.py index 62d3f9c..780f3a8 100644 --- a/framework/grouptools.py +++ b/framework/grouptools.py @@ -30,7 +30,9 @@ posix paths they may not start with a leading '/'. """ __all__ = [ + 'SEPARATOR', 'commonprefix', + 'format', 'from_path', 'groupname', 'join', @@ -161,3 +163,18 @@ def from_path(path): if '.' == path: return '' return path + + +def format(name): + """Format an internal name for printing. + + It doesn't matter how the name is stored internally, presenting a + consistant, clean interface on the command line that doesn't contain any + ugly or problematic chractrs is important. + + This replaces SEPARATOR with '/', which is what most devs are used to and + want to see. + + """ + assert isinstance(name, basestring) + return name.replace(SEPARATOR, '/') diff --git a/framework/summary/console_.py b/framework/summary/console_.py index 03ea239..d219498 100644 --- a/framework/summary/console_.py +++ b/framework/summary/console_.py @@ -91,7 +91,7 @@ def _print_result(results, list_): """Takes a list of test names to print and prints the name and result.""" for test in sorted(list_): print("{test}: {statuses}".format( - test='/'.join(test.split(grouptools.SEPARATOR)), + test=grouptools.format(test), statuses=' '.join(str(r) for r in results.get_result(test)))) diff --git a/framework/tests/grouptools_tests.py b/framework/tests/grouptools_tests.py index acab7ed..3dd0451 100644 --- a/framework/tests/grouptools_tests.py +++ b/framework/tests/grouptools_tests.py @@ -119,3 +119,10 @@ def test_join_empty(): def test_commonprefix_none(): """grouptools.commonprefix: returns '' when no values are the same""" nt.eq_('', grouptools.commonprefix(['foo', 'bar'])) + + +@doc_formatter +def test_format(): + """grouptools.format: replaces {seperator} with '/'""" + test_str = grouptools.SEPARATOR.join(['foo', 'bar', 'boink']) + nt.eq_(grouptools.format(test_str), 'foo/bar/boink') -- 2.6.2 _______________________________________________ Piglit mailing list [email protected] http://lists.freedesktop.org/mailman/listinfo/piglit
