paul@233 | 1 | #!/usr/bin/env python |
paul@233 | 2 | |
paul@233 | 3 | import micropython.cmd |
paul@233 | 4 | import rsvp |
paul@233 | 5 | import sys |
paul@233 | 6 | import os |
paul@233 | 7 | from glob import glob |
paul@317 | 8 | import operator |
paul@233 | 9 | |
paul@233 | 10 | # Main program. |
paul@233 | 11 | |
paul@233 | 12 | if __name__ == "__main__": |
paul@233 | 13 | args = sys.argv[1:] |
paul@233 | 14 | path = sys.path[:] |
paul@233 | 15 | path.append("tests") |
paul@233 | 16 | |
paul@233 | 17 | # Process all tests. |
paul@233 | 18 | |
paul@233 | 19 | try: |
paul@233 | 20 | _f = args.index("-f") |
paul@233 | 21 | filenames = args[_f+1:] |
paul@233 | 22 | except ValueError: |
paul@233 | 23 | filenames = glob(os.path.join("tests", "*.py")) |
paul@233 | 24 | |
paul@233 | 25 | filenames.sort() |
paul@233 | 26 | |
paul@233 | 27 | results = [] |
paul@233 | 28 | |
paul@233 | 29 | for filename in filenames: |
paul@233 | 30 | print "Processing", filename |
paul@233 | 31 | |
paul@233 | 32 | try: |
paul@317 | 33 | p = micropython.cmd.get_program(path, args) |
paul@317 | 34 | m = p.get_importer().load_from_file(filename) |
paul@233 | 35 | |
paul@233 | 36 | # Report any errors. |
paul@233 | 37 | |
paul@233 | 38 | except micropython.ProcessingError, exc: |
paul@233 | 39 | print repr(exc) |
paul@233 | 40 | if "-tb" in args: |
paul@233 | 41 | raise |
paul@233 | 42 | |
paul@233 | 43 | else: |
paul@233 | 44 | rm = rsvp.machine(p) |
paul@233 | 45 | success = rm.test(m) |
paul@233 | 46 | print "Test successful?", success |
paul@233 | 47 | results.append((filename, success)) |
paul@233 | 48 | |
paul@233 | 49 | print |
paul@317 | 50 | print "Failed tests:" |
paul@233 | 51 | for result in results: |
paul@317 | 52 | if not result[1]: |
paul@317 | 53 | print result[0] |
paul@317 | 54 | |
paul@317 | 55 | print |
paul@317 | 56 | print "All successful?" |
paul@317 | 57 | print reduce(operator.and_, [x[1] for x in results], 1) and "Yes" or "No" |
paul@233 | 58 | |
paul@233 | 59 | # vim: tabstop=4 expandtab shiftwidth=4 |