diff options
author | Jelmer Vernooij <jelmer@samba.org> | 2012-03-05 04:05:35 +0100 |
---|---|---|
committer | Jelmer Vernooij <jelmer@samba.org> | 2012-03-05 05:42:19 +0100 |
commit | 53a147d1c0c54fe94ac21f25088fd874d1300102 (patch) | |
tree | 55a72d078a35952894d00e3350c451ea5ccff820 /selftest/testlist.py | |
parent | f26b40a92553863bc0da39918ff19bf21199c608 (diff) | |
download | samba-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.py | 33 |
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() |