[Piglit] [PATCH] profile.py: Support automatic naming of tests with string arguments
Jose Fonseca
jfonseca at vmware.com
Sun Mar 8 03:16:02 PDT 2015
On 06/03/15 19:36, Dylan Baker wrote:
> I made a somewhat silly assumption when writing the group_manager, that
> all Test classes would use list arguments. While this assumption is true
> for tests that require an entire command as their first argument it
> isn't true of GleanTest, where only the name of the subtest is passed.
> In this case it will be a string, and if a name isn't passed as well
> then name will end up being " ".join()'ed, ie, "api" -> "a p i".
>
> This patch adds support to the group_manager to support this feature.
>
> I considered two other approaches here. The first was to say screw
> correctness, and just add a duplicate name to the handful of tests that
> use the group_manager. The second was to change GleanTest to take a 1
> element list. Both of these had downsides that I couldn't justify.
>
> Signed-off-by: Dylan Baker <dylanx.c.baker at intel.com>
> ---
>
> Michel, does this fix your problem?
I'm not familiar enough with the implementations details to review but I
can confirm your patch fixes the problem I reported earlier. Before:
$ ./piglit-print-commands.py tests/llvmpipe.py | grep '^glean/p'
warning: test glean/pointAtten does not exist
warning: test glean/texCombine does not exist
glean/p a t h s ::: bin/glean -o -v -v -v -t +paths --quick
glean/p i x e l f o r m a t s ::: bin/glean -o -v -v -v -t +pixelFormats
--quick
glean/p o i n t s p r i t e ::: bin/glean -o -v -v -v -t +pointSprite
--quick
glean/p o i n t a t t e n ::: bin/glean -o -v -v -v -t +pointAtten --quick
After:
$ ./piglit-print-commands.py tests/llvmpipe.py | grep '^glean/p'
glean/pixelformats ::: bin/glean -o -v -v -v -t +pixelFormats --quick
glean/paths ::: bin/glean -o -v -v -v -t +paths --quick
glean/pointsprite ::: bin/glean -o -v -v -v -t +pointSprite --quick
So
Tested-by: Jose Fonseca <jfonseca at vmware.com>
Thanks for the quick fix Dylan.
Jose
>
> framework/profile.py | 17 +++++++++++++----
> framework/tests/profile_tests.py | 11 +++++++++++
> 2 files changed, 24 insertions(+), 4 deletions(-)
>
> diff --git a/framework/profile.py b/framework/profile.py
> index e8e8ba1..e125a67 100644
> --- a/framework/profile.py
> +++ b/framework/profile.py
> @@ -322,11 +322,20 @@ class TestProfile(object):
> constructor as keyword args.
>
> """
> + # If there is no name, then either
> + # a) join the arguments list together to make the name
> + # b) use the argument string as the name
> + # The former is used by the Piglit{G,C}LTest classes, the latter by
> + # GleanTest
> if not name:
> - lgroup = grouptools.join(group, ' '.join(args))
> - else:
> - assert isinstance(name, basestring)
> - lgroup = grouptools.join(group, name)
> + if isinstance(args, list):
> + name = ' '.join(args)
> + else:
> + assert isinstance(args, basestring)
> + name = args
> +
> + assert isinstance(name, basestring)
> + lgroup = grouptools.join(group, name)
>
> self.test_list[lgroup] = test_class(
> args,
> diff --git a/framework/tests/profile_tests.py b/framework/tests/profile_tests.py
> index d2878c3..96337c6 100644
> --- a/framework/tests/profile_tests.py
> +++ b/framework/tests/profile_tests.py
> @@ -33,6 +33,7 @@ import framework.dmesg as dmesg
> import framework.profile as profile
> from framework.tests import utils
> from framework import grouptools
> +from framework.test import GleanTest
>
> # Don't print sys.stderr to the console
> sys.stderr = sys.stdout
> @@ -241,3 +242,13 @@ def test_testprofile_groupmanager_kwargs_overwrite():
>
> test = prof.test_list[grouptools.join('foo', 'a')]
> nt.assert_equal(test.run_concurrent, False)
> +
> +
> +def test_testprofile_groupmanager_name_str():
> + """TestProfile.group_manager: if args is a string it is not joined."""
> + prof = profile.TestProfile()
> + # Yes, this is really about supporting gleantest anyway.
> + with prof.group_manager(GleanTest, 'foo') as g:
> + g('abc')
> +
> + nt.ok_('foo/abc' in prof.test_list)
>
More information about the Piglit
mailing list