From a50def839c9ead7f05ea90c093a64794f79ed243 Mon Sep 17 00:00:00 2001 From: Jelmer Vernooij Date: Sun, 4 Mar 2012 04:16:16 +0100 Subject: selftest.testlist: Add manager for restricted test lists. --- selftest/testlist.py | 35 +++++++++++++++++++++++++---------- 1 file changed, 25 insertions(+), 10 deletions(-) (limited to 'selftest/testlist.py') diff --git a/selftest/testlist.py b/selftest/testlist.py index bc88f9d0c0..276b51b812 100644 --- a/selftest/testlist.py +++ b/selftest/testlist.py @@ -22,7 +22,6 @@ __all__ = ['find_in_list', 'read_test_regexes', 'read_testlist'] import re -import sys def find_in_list(list, fullname): """Find test in list. @@ -87,14 +86,30 @@ def read_testlist(inf, outf): outf.write(l) -class TestListFilter(object): - """Interface for something that can filter a test list.""" +def read_restricted_test_list(f): + for l in f.readlines(): + yield l.strip() - def should_run_testsuite(self, name): - """Whether to run a specific testsuite. - :param name: Name of the testsuite - :return: List of tests to run. None means run the whole testsuite. - Return an empty list to not run this testsuite - """ - raise NotImplementedError(self.should_run_testsuite) +class RestrictedTestManager(object): + + def __init__(self, test_list): + self.test_list = test_list + self.unused = set(self.test_list) + + def should_run_testsuite(self, name): + match = [] + for r in self.test_list: + if r == name: + match = None + if r in self.unused: + self.unused.remove(r) + elif r.startswith(name + "."): + if match is not None: + match.append(r[len(name+"."):]) + if r in self.unused: + self.unused.remove(r) + return match + + def iter_unused(self): + return iter(self.unused) -- cgit