micropython

Annotated test_all.py

506:d5f5db3d3636
2012-05-18 Paul Boddie Added support for the inspection and generation of list comprehensions. Moved various common code generation routines into separate methods and adjusted the list and sequence population methods for wider re-use.
paul@233 1
#!/usr/bin/env python
paul@233 2
paul@233 3
import sys
paul@233 4
import os
paul@233 5
from glob import glob
paul@317 6
import operator
paul@233 7
paul@352 8
libdirs = [
paul@352 9
    os.path.join(os.path.split(__file__)[0], "lib"),
paul@352 10
    "/usr/share/micropython/lib"
paul@352 11
    ]
paul@352 12
paul@233 13
# Main program.
paul@233 14
paul@233 15
if __name__ == "__main__":
paul@233 16
    args = sys.argv[1:]
paul@352 17
    path = libdirs + sys.path[:]
paul@233 18
    path.append("tests")
paul@233 19
paul@233 20
    # Process all tests.
paul@233 21
paul@233 22
    try:
paul@233 23
        _f = args.index("-f")
paul@233 24
        filenames = args[_f+1:]
paul@407 25
        args = args[:_f]
paul@233 26
    except ValueError:
paul@233 27
        filenames = glob(os.path.join("tests", "*.py"))
paul@233 28
paul@233 29
    filenames.sort()
paul@233 30
paul@407 31
    # Make some arguments for the test program.
paul@407 32
paul@407 33
    args.append("-t")
paul@407 34
    if "-tb" not in args:
paul@407 35
        args.append("-exit")
paul@407 36
paul@233 37
    results = []
paul@233 38
paul@233 39
    for filename in filenames:
paul@233 40
        print "Processing", filename
paul@441 41
        status = os.system("%s test.py %s %s" % (sys.executable, filename, " ".join(args)))
paul@441 42
        if status == 2:
paul@441 43
            print "Interrupted!"
paul@441 44
            break
paul@441 45
paul@441 46
        success = status == 0
paul@407 47
        print "Test successful?", success and "Yes" or "No"
paul@407 48
        results.append((filename, success))
paul@233 49
paul@362 50
    failed = [result[0] for result in results if not result[1]]
paul@362 51
    if failed:
paul@362 52
        print
paul@362 53
        print "Failed tests:"
paul@362 54
        for filename in failed:
paul@362 55
            print filename
paul@317 56
paul@317 57
    print
paul@317 58
    print "All successful?"
paul@317 59
    print reduce(operator.and_, [x[1] for x in results], 1) and "Yes" or "No"
paul@233 60
paul@233 61
# vim: tabstop=4 expandtab shiftwidth=4