[Piglit] [PATCH 3/3] framework/sumamry/common.py: Fix subtest handling in non-all groups

Marek Olšák maraeo at gmail.com
Tue Oct 20 03:32:06 PDT 2015


Thanks. It works like a charm.

Tested-by: Marek Olšák <marek.olsak at amd.com>

Marek

On Tue, Oct 20, 2015 at 12:34 AM,  <baker.dylan.c at gmail.com> wrote:
> From: Dylan Baker <baker.dylan.c at gmail.com>
>
> The gist of the problem is that we handle lookup for subtests in the all
> group correctly, but when we went to compare between multiple results we
> don't.
>
> This patch makes use of the get_result from the previous patch to
> simplify test name lookups, and fix the non-all case.
>
> Signed-off-by: Dylan Baker <dylanx.c.baker at intel.com>
> ---
>  framework/summary/common.py              | 33 +++++++++++++++++---------------
>  framework/tests/summary_console_tests.py |  2 +-
>  2 files changed, 19 insertions(+), 16 deletions(-)
>
> diff --git a/framework/summary/common.py b/framework/summary/common.py
> index b67a983..95af02a 100644
> --- a/framework/summary/common.py
> +++ b/framework/summary/common.py
> @@ -55,19 +55,9 @@ class Results(object):  # pylint: disable=too-few-public-methods
>          results = []
>          for res in self.results:
>              try:
> -                results.append(res.tests[name].result)
> +                results.append(res.get_result(name))
>              except KeyError:
>                  results.append(so.NOTRUN)
> -        if all(x == so.NOTRUN for x in results):
> -            # this is likely a subtest, see if that's the case
> -            name, test = grouptools.splitname(name)
> -
> -            results = []
> -            for res in self.results:
> -                try:
> -                    results.append(res.tests[name].subtests[test])
> -                except KeyError:
> -                    results.append(so.NOTRUN)
>          return results
>
>
> @@ -138,8 +128,9 @@ class Names(object):
>      @lazy_property
>      def enabled(self):
>          def handler(names, name, prev, cur):
> -            if name not in prev.tests and name in cur.tests:
> +            if _result_in(name, cur) and not _result_in(name, prev):
>                  names.add(name)
> +
>          return self.__diff(
>              lambda x, y: x is so.NOTRUN and y is not so.NOTRUN,
>              handler=handler)
> @@ -147,8 +138,9 @@ class Names(object):
>      @lazy_property
>      def disabled(self):
>          def handler(names, name, prev, cur):
> -            if name in prev.tests and name not in cur.tests:
> +            if _result_in(name, prev) and not _result_in(name, cur):
>                  names.add(name)
> +
>          return self.__diff(
>              lambda x, y: x is not so.NOTRUN and y is so.NOTRUN,
>              handler=handler)
> @@ -266,6 +258,17 @@ def escape_pathname(key):
>      return re.sub(r'[/\\]', '_', key)
>
>
> +def _result_in(name, result):
> +    """If a result (or a subtest result) exists return True, else False."""
> +    try:
> +        # This is a little hacky, but I don't know of a better way where we
> +        # ensure the value is truthy
> +        _ = result.get_result(name)
> +        return True
> +    except KeyError:
> +        return False
> +
> +
>  def find_diffs(results, tests, comparator, handler=lambda *a: None):
>      """Generate diffs between two or more sets of results.
>
> @@ -290,7 +293,7 @@ def find_diffs(results, tests, comparator, handler=lambda *a: None):
>          names = set()
>          for name in tests:
>              try:
> -                if comparator(prev.tests[name].result, cur.tests[name].result):
> +                if comparator(prev.get_result(name), cur.get_result(name)):
>                      names.add(name)
>              except KeyError:
>                  handler(names, name, prev, cur)
> @@ -305,7 +308,7 @@ def find_single(results, tests, func):
>          names = set()
>          for name in tests:
>              try:
> -                if func(res.tests[name].result):
> +                if func(res.get_result(name)):
>                      names.add(name)
>              except KeyError:
>                  pass
> diff --git a/framework/tests/summary_console_tests.py b/framework/tests/summary_console_tests.py
> index 5d9d448..53ecdf1 100644
> --- a/framework/tests/summary_console_tests.py
> +++ b/framework/tests/summary_console_tests.py
> @@ -93,7 +93,7 @@ class Test_print_summary(object):
>              incomplete=template.format('0', '0'),
>              dmesg_warn=template.format('0', '0'),
>              dmesg_fail=template.format('0', '0'),
> -            changes=template.format('0', '1'),
> +            changes=template.format('0', '2'),
>              fixes=template.format('0', '1'),
>              regressions=template.format('0', '0'),
>              total=template.format('3', '3')).split('\n')
> --
> 2.6.1
>


More information about the Piglit mailing list