summaryrefslogtreecommitdiff
path: root/selftest/testlist.py
diff options
context:
space:
mode:
authorJelmer Vernooij <jelmer@samba.org>2012-03-04 04:16:16 +0100
committerJelmer Vernooij <jelmer@samba.org>2012-03-04 18:02:07 +0100
commita50def839c9ead7f05ea90c093a64794f79ed243 (patch)
treee88b304fa53ffffa7299981671e10b120f772c4c /selftest/testlist.py
parent616139c01e03799f2cb047f78c60d3afc004d15e (diff)
downloadsamba-a50def839c9ead7f05ea90c093a64794f79ed243.tar.gz
samba-a50def839c9ead7f05ea90c093a64794f79ed243.tar.bz2
samba-a50def839c9ead7f05ea90c093a64794f79ed243.zip
selftest.testlist: Add manager for restricted test lists.
Diffstat (limited to 'selftest/testlist.py')
-rw-r--r--selftest/testlist.py35
1 files changed, 25 insertions, 10 deletions
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)