diff options
Diffstat (limited to 'selftest')
-rw-r--r-- | selftest/testlist.py | 21 | ||||
-rw-r--r-- | selftest/tests/test_testlist.py | 19 |
2 files changed, 39 insertions, 1 deletions
diff --git a/selftest/testlist.py b/selftest/testlist.py index 8fb31fd898..e535194510 100644 --- a/selftest/testlist.py +++ b/selftest/testlist.py @@ -19,13 +19,14 @@ """Selftest test list management.""" -__all__ = ['find_in_list'] +__all__ = ['find_in_list', 'read_test_regexes'] import re def find_in_list(list, fullname): """Find test in list. + :param list: List with 2-tuples with regex and reason """ for (regex, reason) in list: if re.match(regex, fullname): @@ -34,3 +35,21 @@ def find_in_list(list, fullname): else: return "" return None + + +def read_test_regexes(f): + """Read tuples with regular expression and optional string from a file. + + :param f: File-like object to read from + :return: Iterator over tuples with regular expression and test name + """ + for l in f.readlines(): + l = l.strip() + if l[0] == "#": + continue + try: + (test, reason) = l.split("#", 1) + except ValueError: + yield l, None + else: + yield test.strip(), reason.strip() diff --git a/selftest/tests/test_testlist.py b/selftest/tests/test_testlist.py index e62300cace..5f03887b4e 100644 --- a/selftest/tests/test_testlist.py +++ b/selftest/tests/test_testlist.py @@ -21,8 +21,11 @@ from selftest.testlist import ( find_in_list, + read_test_regexes, ) +from cStringIO import StringIO + import unittest @@ -34,3 +37,19 @@ class FindInListTests(unittest.TestCase): def test_no_reason(self): self.assertEquals("because", find_in_list([("foo.*bar", "because")], "foo.bla.bar")) + + +class ReadTestRegexesTests(unittest.TestCase): + + def test_comment(self): + f = StringIO("# I am a comment\n # I am also a comment\n") + self.assertEquals([], list(read_test_regexes(f))) + + def test_no_reason(self): + f = StringIO(" foo\n") + self.assertEquals([("foo", None)], list(read_test_regexes(f))) + + def test_reason(self): + f = StringIO(" foo # because\nbar\n") + self.assertEquals([("foo", "because"), ("bar", None)], + list(read_test_regexes(f))) |