| import os |
| import sys |
| import unittest |
| import glob |
| |
| def test(modules, verbosity): |
| for m in modules: |
| s = unittest.defaultTestLoader.loadTestsFromName(m) |
| result = unittest.TextTestRunner(verbosity=verbosity).run(s) |
| if not result.wasSuccessful(): |
| return 1 |
| return 0 |
| |
| |
| def _modules(root): |
| modules = [] |
| files = glob.glob(os.path.join(root, 'utest', '*.py')) |
| files.sort() |
| for fname in files: |
| fname = os.path.split(fname)[1] # remove path |
| module = 'pychecker2.utest.' + os.path.splitext(fname)[0] |
| if not module.endswith('_'): # ignore __init__ |
| modules.append(module) |
| return modules |
| |
| class Usage(Exception): pass |
| |
| def main(args): |
| import getopt |
| verbosity = 1 |
| try: |
| opts, files = getopt.getopt(args, 'v') |
| for opt, arg in opts: |
| if opt == '-v': |
| verbosity += 1 |
| else: |
| raise Usage('unknown option ' + opt) |
| except getopt.GetoptError, detail: |
| raise Usage(str(detail)) |
| |
| root = os.path.dirname(os.path.realpath(sys.argv[0])) |
| pychecker2 = os.path.split(root)[0] |
| sys.path.append(pychecker2) |
| |
| return test(_modules(root), verbosity) |
| |
| |
| if __name__ == '__main__': |
| try: |
| sys.exit(main(sys.argv[1:])) |
| except Usage, error: |
| err = sys.stderr |
| print >>err, "Error: " + str(error) |
| print >>err, "Usage: %s [-v]" % sys.argv[0] |
| sys.exit(1) |