Mercurial > hg > pyloader
changeset 84:daf3a05a05fe
STUB: tests/test.py
author | Jeff Hammel <k0scist@gmail.com> |
---|---|
date | Fri, 21 Mar 2014 21:29:24 -0700 |
parents | 58eed691dca7 |
children | 418289c0fe3c |
files | tests/test.py |
diffstat | 1 files changed, 23 insertions(+), 7 deletions(-) [+] |
line wrap: on
line diff
--- a/tests/test.py Mon Nov 11 19:18:58 2013 -0800 +++ b/tests/test.py Fri Mar 21 21:29:24 2014 -0700 @@ -1,7 +1,7 @@ #!/usr/bin/env python """ -doctest runner for pyloader +run tests for pyloader """ import doctest @@ -9,25 +9,31 @@ import sys from optparse import OptionParser +directory = os.path.dirname(os.path.abspath(__file__)) -def run_tests(raise_on_error=False, report_first=False): +def gather(): + """ gather tests""" + return [test for test in os.listdir(directory) + if test.endswith('.txt')] + +def run_tests(tests=None, raise_on_error=False, report_first=False): + """run the tests""" # add results here results = {} # doctest arguments - directory = os.path.dirname(os.path.abspath(__file__)) extraglobs = {'here': directory} doctest_args = dict(extraglobs=extraglobs, raise_on_error=raise_on_error) if report_first: doctest_args['optionflags'] = doctest.REPORT_ONLY_FIRST_FAILURE # gather tests - tests = [ test for test in os.listdir(directory) - if test.endswith('.txt') ] + tests = tests or gather() # run the tests for test in tests: + print ("Running: " + test) try: results[test] = doctest.testfile(test, **doctest_args) except doctest.DocTestFailure, failure: @@ -40,7 +46,10 @@ def main(args=sys.argv[1:]): # parse command line args - parser = OptionParser() + parser = OptionParser(description=__doc__) + parser.add_option('--list', dest='list_tests', + action='store_true', default=False, + help="list tests and exit") parser.add_option('--raise', dest='raise_on_error', default=False, action='store_true', help="raise on first error") @@ -49,12 +58,19 @@ help="report the first error only (all tests will still run)") options, args = parser.parse_args(args) + # gathe tests + tests = gather() + + if options.list_tests: + print ("\n".join(tests)) + sys.exit() + # run the tests results = run_tests(report_first=options.report_first, raise_on_error=options.raise_on_error) if sum([i.failed for i in results.values()]): sys.exit(1) # error - + if __name__ == '__main__': main()