summaryrefslogtreecommitdiff
path: root/selftest/testlist.py
diff options
context:
space:
mode:
authorJelmer Vernooij <jelmer@samba.org>2012-03-05 04:05:35 +0100
committerJelmer Vernooij <jelmer@samba.org>2012-03-05 05:42:19 +0100
commit53a147d1c0c54fe94ac21f25088fd874d1300102 (patch)
tree55a72d078a35952894d00e3350c451ea5ccff820 /selftest/testlist.py
parentf26b40a92553863bc0da39918ff19bf21199c608 (diff)
downloadsamba-53a147d1c0c54fe94ac21f25088fd874d1300102.tar.gz
selftest.run: Factor out read_testlist_file and open_file_or_pipe.
Autobuild-User: Jelmer Vernooij <jelmer@samba.org> Autobuild-Date: Mon Mar 5 05:42:19 CET 2012 on sn-devel-104
Diffstat (limited to 'selftest/testlist.py')
-rw-r--r--selftest/testlist.py33
1 files changed, 33 insertions, 0 deletions
diff --git a/selftest/testlist.py b/selftest/testlist.py
index 441dda7cbb1..5102f4288bd 100644
--- a/selftest/testlist.py
+++ b/selftest/testlist.py
@@ -21,7 +21,9 @@
__all__ = ['find_in_list', 'read_test_regexes', 'read_testlist']
+import os
import re
+import sys
def find_in_list(list, fullname):
"""Find test in list.
@@ -133,3 +135,34 @@ class RestrictedTestManager(object):
:return: Iterator over test list entries that were not used.
"""
return iter(self.unused)
+
+
+def open_file_or_pipe(path, mode):
+ """Open a file or pipe.
+
+ :param path: Path to open; if it ends with | it is assumed to be a
+ command to run
+ :param mode: Mode with which to open it
+ :return: File-like object
+ """
+ if path.endswith("|"):
+ return os.popen(path[:-1], mode)
+ return open(path, mode)
+
+
+def read_testlist_file(fn, outf=None):
+ """Read testlist file.
+
+ :param fn: Path to read (assumed to be a command to run if it ends with |)
+ :param outf: File-like object to pass non-test data through to
+ (defaults to stdout)
+ :return: Iterator over test suites (see read_testlist)
+ """
+ if outf is None:
+ outf = sys.stdout
+ inf = open_file_or_pipe(fn, 'r')
+ try:
+ for testsuite in read_testlist(inf, outf):
+ yield testsuite
+ finally:
+ inf.close()