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

Dylan Baker baker.dylan.c at gmail.com
Tue Feb 24 12:14:56 PST 2015


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 """
-    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