[Piglit] [PATCH 1/2] profile_tests.py: Convert generator test into a class test

Mark Janes mark.a.janes at intel.com
Tue Feb 24 13:21:58 PST 2015


Dylan Baker <baker.dylan.c at gmail.com> writes:

> I've been resistant to use classes for tests because its very easy to
> end up bending and abusing classes in that context, but sometimes a
> class is exactly what you want, a structure that shares its data between
> several unique tests.
>
> This replaces a generator that does the same thing with a class. It ends
> up being less code and I think that the resulting code is more readable.
>
> Signed-off-by: Dylan Baker <dylanx.c.baker at intel.com>
> ---
>  framework/tests/profile_tests.py | 117 +++++++++++++++++----------------------
>  1 file changed, 51 insertions(+), 66 deletions(-)
>
> diff --git a/framework/tests/profile_tests.py b/framework/tests/profile_tests.py
> index 183f526..1f94b19 100644
> --- a/framework/tests/profile_tests.py
> +++ b/framework/tests/profile_tests.py
> @@ -21,6 +21,7 @@
>  """ Provides test for the framework.profile modules """
>  
>  from __future__ import print_function, absolute_import
> +import sys
>  import copy
>  import platform
>  
> @@ -32,6 +33,9 @@ import framework.dmesg as dmesg
>  import framework.profile as profile
>  from framework.tests import utils
>  
> +# Don't print sys.stderr to the console
> +sys.stderr = sys.stdout
> +
>  
>  def test_initialize_testprofile():
>      """ TestProfile initializes """
> @@ -194,87 +198,68 @@ def check_mixed_flatten(tests, testlist):
>      nt.assert_dict_equal(profile_.test_list, baseline)
>  
>  
> -def generate_prepare_test_list_test_test_matches():
> -    """ Generate tests for TestProfile.perpare_test_list filtering """
typo:                                     ^^^

Other than that, the series is:
Reviewed-by: Mark Janes <mark.a.janes at intel.com>

> -    data = {'group1/test1': 'thingy', 'group1/group3/test2': 'thing',
> -            'group3/test5': 'other'}
> -
> -    test_matches_filter_mar_1.description = (
> -        "TestProfile.prepare_test_list: "
> -        "'not env.filter or matches_any_regex() env.filter is False")
> -    yield test_matches_filter_mar_1, data
> -
> -    test_matches_filter_mar_2.description = (
> -        "TestProfile.prepare_test_list: "
> -        "Tests 'not env.filter or matches_any_regex() mar is False")
> -    yield test_matches_filter_mar_2, data
> -
> -    test_matches_env_exclude.description = (
> -        "TestProfile.prepare_test_list: "
> -        "Tests 'not path in env.exclude_tests' is True")
> -    yield test_matches_env_exclude, data
> -
> -    test_matches_exclude_mar.description = \
> -        "TestProfile.prepare_test_list: Tests 'not matches_any_regex"
> -    yield test_matches_exclude_mar, data
> +class TestPrepareTestListMatches(object):
> +    """Create tests for TestProfile.perpare_test_list filtering"""
> +    def __init__(self):
> +        self.data = {
> +            'group1/test1': 'thingy',
> +            'group1/group3/test2': 'thing',
> +            'group3/test5': 'other'
> +        }
>  
> +    def test_matches_filter_mar_1(self):
> +        """TestProfile.prepare_test_list: 'not env.filter or
> +        matches_any_regex() env.filter is False
>  
> - at nt.nottest
> -def test_matches_filter_mar_1(data):
> -    """ Tests 'not env.filter or matches_any_regex() env.filter is False
> -
> -    Nothing should be filtered.
> -
> -    """
> -    env = core.Options()
> -
> -    profile_ = profile.TestProfile()
> -    profile_.test_list = data
> -    profile_._prepare_test_list(env)
> +        Nothing should be filtered.
>  
> -    nt.assert_dict_equal(profile_.test_list, data)
> +        """
> +        env = core.Options()
>  
> +        profile_ = profile.TestProfile()
> +        profile_.test_list = self.data
> +        profile_._prepare_test_list(env)
>  
> - at nt.nottest
> -def test_matches_filter_mar_2(data):
> -    """ Tests 'not env.filter or matches_any_regex() mar is False"""
> -    env = core.Options(include_filter=['test5'])
> +        nt.assert_dict_equal(profile_.test_list, self.data)
>  
> -    profile_ = profile.TestProfile()
> -    profile_.test_list = data
> -    profile_._prepare_test_list(env)
> +    def test_matches_filter_mar_2(self):
> +        """TestProfile.prepare_test_list: 'not env.filter or matches_any_regex()
> +        mar is False
>  
> -    baseline = {'group3/test5': 'other'}
> +        """
> +        env = core.Options(include_filter=['test5'])
>  
> -    nt.assert_dict_equal(profile_.test_list, baseline)
> +        profile_ = profile.TestProfile()
> +        profile_.test_list = self.data
> +        profile_._prepare_test_list(env)
>  
> +        baseline = {'group3/test5': 'other'}
>  
> - at nt.nottest
> -def test_matches_env_exclude(data):
> -    """ Tests 'not path in env.exclude_tests  """
> -    env = core.Options()
> -    env.exclude_tests.add('group3/test5')
> +        nt.assert_dict_equal(profile_.test_list, baseline)
>  
> -    profile_ = profile.TestProfile()
> -    profile_.test_list = data
> -    profile_._prepare_test_list(env)
> +    def test_matches_env_exclude(self):
> +        """TestProfile.prepare_test_list: 'not path in env.exclude_tests"""
> +        env = core.Options()
> +        env.exclude_tests.add('group3/test5')
>  
> -    baseline = copy.deepcopy(data)
> -    del baseline['group3/test5']
> +        profile_ = profile.TestProfile()
> +        profile_.test_list = self.data
> +        profile_._prepare_test_list(env)
>  
> -    nt.assert_dict_equal(profile_.test_list, baseline)
> +        baseline = copy.deepcopy(self.data)
> +        del baseline['group3/test5']
>  
> +        nt.assert_dict_equal(profile_.test_list, baseline)
>  
> - at nt.nottest
> -def test_matches_exclude_mar(data):
> -    """ Tests 'not matches_any_regexp() """
> -    env = core.Options(exclude_filter=['test5'])
> +    def test_matches_exclude_mar(self):
> +        """TestProfile.prepare_test_list: 'not matches_any_regexp()"""
> +        env = core.Options(exclude_filter=['test5'])
>  
> -    profile_ = profile.TestProfile()
> -    profile_.test_list = data
> -    profile_._prepare_test_list(env)
> +        profile_ = profile.TestProfile()
> +        profile_.test_list = self.data
> +        profile_._prepare_test_list(env)
>  
> -    baseline = copy.deepcopy(data)
> -    del baseline['group3/test5']
> +        baseline = copy.deepcopy(self.data)
> +        del baseline['group3/test5']
>  
> -    nt.assert_dict_equal(profile_.test_list, baseline)
> +        nt.assert_dict_equal(profile_.test_list, baseline)
> -- 
> 2.3.0


More information about the Piglit mailing list