[Piglit] [PATCH 1/3] framework/grouptools.py: Add a function for print formatting

Glenn Kennard glenn.kennard at gmail.com
Fri Nov 20 17:54:33 PST 2015


On Sat, 21 Nov 2015 02:10:01 +0100, <baker.dylan.c at gmail.com> wrote:

> From: Dylan Baker <baker.dylan.c at gmail.com>
>
> 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.
>

consistence

> 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 <dylanx.c.baker at intel.com>
> ---
>
> 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 at bar@boink at 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.
> +

consistent, characters

> +    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']))
> +
> +
> + at doc_formatter
> +def test_format():
> +    """grouptools.format: replaces {seperator} with '/'"""

separator

> +    test_str = grouptools.SEPARATOR.join(['foo', 'bar', 'boink'])
> +    nt.eq_(grouptools.format(test_str), 'foo/bar/boink')

With trivial typos fixed,
Reviewed-by Glenn Kennard <glenn.kennard at gmail.com>


More information about the Piglit mailing list