[apparmor] [patch] convert test-regex_matches.py to new tests[] loop

Christian Boltz apparmor at cboltz.de
Wed Mar 4 00:06:59 UTC 2015


Hello,

this patch converts test-regex_matches.py to the new tests[] loop.

Needless to say that this patch depends on 
    [patch] add better loop support to common_test.py

The test behaviour is the same with and without this patch - 166 tests
run, all successful.

BTW: I don't care too much for getting rid of setup_has_comma_testcases()
and setup_split_comment_testcases() - the important point of this patch
is to get rid of the list of test classes and the risk of forgetting to 
add new classes there.

Oh, just in case you wonder - some parts of this patch are hand-formatted ;-)


As usual, I propose this patch for trunk and 2.9.


[ convert-test-regex_matches.diff ]

=== modified file 'utils/test/test-regex_matches.py'
--- utils/test/test-regex_matches.py    2015-03-03 19:15:00 +0000
+++ utils/test/test-regex_matches.py    2015-03-03 23:45:38 +0000
@@ -11,10 +11,17 @@
 
 import apparmor.aa as aa
 import unittest
+import sys
+from common_test import AATest, setup_all_tests
 
 from apparmor.regex import strip_quotes
 
+class AARegexTest(AATest):
+    def _run_test(self, params, expected):
+        return regex_test(self, params, expected)
+
+
-class AARegexHasComma(unittest.TestCase):
+class AARegexHasComma(AATest):
     '''Tests for apparmor.aa.RE_RULE_HAS_COMMA'''
 
     def _check(self, line, expected=True):
@@ -94,7 +101,7 @@
         setattr(AARegexHasComma, 'test_comma_%d' % (i), stub_test_comma)
         setattr(AARegexHasComma, 'test_no_comma_%d' % (i), stub_test_no_comma)
 
-class AARegexSplitComment(unittest.TestCase):
+class AARegexSplitComment(AATest):
     '''Tests for RE_HAS_COMMENT_SPLIT'''
 
     def _check(self, line, expected, comment=None, not_comment=None):
@@ -166,23 +173,10 @@
         self.assertEqual(group, expected[i], 'Group %d mismatch in rule %s' % (i,line))
 
 
-def setup_regex_tests(test_class):
-    '''Create tests in test_class using test_class.tests and regex_tests()
-
-    test_class.tests should be tuples of (line, expected_results) where
-    expected_results is False if test_class.regex.search(line) should not
-    match. If the search should match, expected_results should be a tuple of
-    the expected groups, with all of the strings stripped.
-    '''
-    for (i, (line, expected)) in enumerate(test_class.tests):
-        def stub_test(self, line=line, expected=expected):
-            regex_test(self, line, expected)
-
-        stub_test.__doc__ = "test '%s'" % (line)
-        setattr(test_class, 'test_%d' % (i), stub_test)
 
 
+
-class AARegexCapability(unittest.TestCase):
+class AARegexCapability(AARegexTest):
     '''Tests for RE_PROFILE_CAP'''
 
     def setUp(self):
@@ -197,7 +191,7 @@
     ]
 
 
-class AARegexPath(unittest.TestCase):
+class AARegexPath(AARegexTest):
     '''Tests for RE_PROFILE_PATH_ENTRY'''
 
     def setUp(self):
@@ -216,7 +210,7 @@
     ]
 
 
-class AARegexBareFile(unittest.TestCase):
+class AARegexBareFile(AARegexTest):
     '''Tests for RE_PROFILE_BARE_FILE_ENTRY'''
 
     def setUp(self):
@@ -234,7 +228,7 @@
     ]
 
 
-class AARegexDbus(unittest.TestCase):
+class AARegexDbus(AARegexTest):
     '''Tests for RE_PROFILE_DBUS'''
 
     def setUp(self):
@@ -250,7 +244,7 @@
         ('   audit dbusdriver,', False),
     ]
 
-class AARegexMount(unittest.TestCase):
+class AARegexMount(AARegexTest):
     '''Tests for RE_PROFILE_MOUNT'''
 
     def setUp(self):
@@ -273,7 +267,7 @@
     ]
 
 
-class AARegexSignal(unittest.TestCase):
+class AARegexSignal(AARegexTest):
     '''Tests for RE_PROFILE_SIGNAL'''
 
     def setUp(self):
@@ -300,7 +294,7 @@
     ]
 
 
-class AARegexPtrace(unittest.TestCase):
+class AARegexPtrace(AARegexTest):
     '''Tests for RE_PROFILE_PTRACE'''
 
     def setUp(self):
@@ -322,7 +316,7 @@
     ]
 
 
-class AARegexPivotRoot(unittest.TestCase):
+class AARegexPivotRoot(AARegexTest):
     '''Tests for RE_PROFILE_PIVOT_ROOT'''
 
     def setUp(self):
@@ -349,7 +343,7 @@
         ('pivot_rootbeer /new, # comment', False),
     ]
 
-class AARegexUnix(unittest.TestCase):
+class AARegexUnix(AARegexTest):
     '''Tests for RE_PROFILE_UNIX'''
 
     def setUp(self):
@@ -374,7 +368,7 @@
         ('deny unixlike,', False),
     ]
 
-class TestStripQuotes(unittest.TestCase):
+class TestStripQuotes(AATest):
     def test_strip_quotes_01(self):
         self.assertEqual('foo', strip_quotes('foo'))
     def test_strip_quotes_02(self):
@@ -394,22 +388,9 @@
 
 
 if __name__ == '__main__':
-    verbosity = 2
-
+    # these two are not converted to a tests[] loop yet
     setup_has_comma_testcases()
     setup_split_comment_testcases()
 
-    test_suite = unittest.TestSuite()
-    test_suite.addTest(unittest.TestLoader().loadTestsFromTestCase(AARegexHasComma))
-    test_suite.addTest(unittest.TestLoader().loadTestsFromTestCase(AARegexSplitComment))
-    test_suite.addTest(unittest.TestLoader().loadTestsFromTestCase(TestStripQuotes))
-
-    for tests in (AARegexCapability, AARegexPath, AARegexBareFile,
-                  AARegexDbus, AARegexMount, AARegexUnix,
-                  AARegexSignal, AARegexPtrace, AARegexPivotRoot):
-        setup_regex_tests(tests)
-        test_suite.addTest(unittest.TestLoader().loadTestsFromTestCase(tests))
-
-    result = unittest.TextTestRunner(verbosity=verbosity).run(test_suite)
-    if not result.wasSuccessful():
-        exit(1)
+    setup_all_tests(sys.modules[__name__])
+    unittest.main(verbosity=2)



Regards,

Christian Boltz
-- 
> (gnome packages are getting too few and too easy :P )
Be sure that I'll keep this quote for later when we'll suffer
some pain with gnome packages ;-)
[> Dominique Leuenberger and Vincent Untz in opensuse-factory]




More information about the AppArmor mailing list