From 4802561d690e63213cc2274a4b72ed278908bf97 Mon Sep 17 00:00:00 2001 From: Jelmer Vernooij Date: Sun, 4 Mar 2012 03:24:10 +0100 Subject: selftest.testlist: Add read_testlist. --- selftest/testlist.py | 34 +++++++++++++++++++++++++++++++++- selftest/tests/test_testlist.py | 18 ++++++++++++++++++ 2 files changed, 51 insertions(+), 1 deletion(-) (limited to 'selftest') diff --git a/selftest/testlist.py b/selftest/testlist.py index e535194510..c37701280b 100644 --- a/selftest/testlist.py +++ b/selftest/testlist.py @@ -19,9 +19,10 @@ """Selftest test list management.""" -__all__ = ['find_in_list', 'read_test_regexes'] +__all__ = ['find_in_list', 'read_test_regexes', 'read_testlist'] import re +import sys def find_in_list(list, fullname): """Find test in list. @@ -53,3 +54,34 @@ def read_test_regexes(f): yield l, None else: yield test.strip(), reason.strip() + + +def should_run_test(tests, name): + if tests == []: + return True + for test in tests: + if re.match(test, name): + return True + return False + + +def read_testlist(inf, outf): + """Read a list of tests from a file. + + :param inf: File-like object to read from. + :param outf: File-like object to write to. + :return: Iterator over tuples describing tests + """ + while True: + l = inf.readline() + if l == '': + return + if l.startswith("-- TEST") and l.endswith(" --\n"): + supports_loadlist = l.startswith("-- TEST-LOADLIST") + supports_idlist = l.startswith("-- TEST-IDLIST") + name = inf.readline().rstrip("\n") + env = inf.readline().rstrip("\n") + cmdline = inf.readline().rstrip("\n") + yield (name, env, cmdline, supports_loadlist, supports_idlist) + else: + outf.write(l) diff --git a/selftest/tests/test_testlist.py b/selftest/tests/test_testlist.py index 5f03887b4e..0e7f68bf8e 100644 --- a/selftest/tests/test_testlist.py +++ b/selftest/tests/test_testlist.py @@ -22,6 +22,7 @@ from selftest.testlist import ( find_in_list, read_test_regexes, + read_testlist, ) from cStringIO import StringIO @@ -53,3 +54,20 @@ class ReadTestRegexesTests(unittest.TestCase): f = StringIO(" foo # because\nbar\n") self.assertEquals([("foo", "because"), ("bar", None)], list(read_test_regexes(f))) + + +class ReadTestlistTests(unittest.TestCase): + + def test_read_list(self): + inf = StringIO("-- TEST --\nfoo\nbar\nbla\n") + outf = StringIO() + self.assertEquals([('foo', 'bar', 'bla', False, False)], + list(read_testlist(inf, outf))) + self.assertEquals("", outf.getvalue()) + + def test_read_list_passes_through(self): + inf = StringIO("MORENOISE\n-- TEST --\nfoo\nbar\nbla\nNOISE\n") + outf = StringIO() + self.assertEquals([('foo', 'bar', 'bla', False, False)], + list(read_testlist(inf, outf))) + self.assertEquals("MORENOISE\nNOISE\n", outf.getvalue()) -- cgit