#!/usr/bin/env python import glob import logging import os import sys import unittest from trace import fullmodname try: from tests.utils import cleanup except: def cleanup(): pass sys.path.insert(0, os.getcwd()) verbosity = 1 if "-q" in sys.argv or '--quiet' in sys.argv: verbosity = 0 if "-v" in sys.argv or '--verbose' in sys.argv: verbosity = 2 if verbosity == 0: logging.disable(logging.CRITICAL) elif verbosity == 1: logging.disable(logging.ERROR) elif verbosity == 2: logging.basicConfig(level=logging.DEBUG) def build_suite(folder): # find all of the test modules modules = map(fullmodname, glob.glob(os.path.join(folder, 'test_*.py'))) if verbosity > 0: print "Running the tests found in the following modules:" print modules # load all of the tests into a suite try: return unittest.TestLoader().loadTestsFromNames(modules) except Exception, exception: # attempt to produce a more specific message for module in modules: __import__(module) raise # build and run unit test suite unit_tests = build_suite('tests') unittest.TextTestRunner(verbosity=verbosity).run(unit_tests) cleanup() # build and run functional test suite functional_tests = build_suite('functional_tests') unittest.TextTestRunner(verbosity=verbosity).run(functional_tests) cleanup()