#! /usr/bin/env python
"""\
UnitTest runner. This one searches for all files named test_*.py and collects
all test cases from these files. Finally it runs all tests and prints a
summary.
"""
import unittest
import sys
import os
import time
# inject local copy to avoid testing the installed version instead of the
# working copy
sys.path.insert(0, '..')
import serial
print "Patching sys.path to test local version. Testing Version: %s" % (serial.VERSION,)
PORT = 'loop://'
if len(sys.argv) > 1:
PORT = sys.argv[1]
# find files and the tests in them
mainsuite = unittest.TestSuite()
for modulename in [os.path.splitext(x)[0]
for x in os.listdir('.')
if x != __file__ and x.startswith("test_") and x.endswith(".py")
]:
try:
module = __import__(modulename)
except ImportError:
print "skipping %s" % modulename
else:
module.PORT = PORT
testsuite = unittest.findTestCases(module)
print "found %s tests in %r" % (testsuite.countTestCases(), modulename)
mainsuite.addTest(testsuite)
verbosity = 1
if '-v' in sys.argv[1:]:
verbosity = 2
# run the collected tests
testRunner = unittest.TextTestRunner(verbosity=verbosity)
#~ testRunner = unittest.ConsoleTestRunner(verbosity=verbosity)
result = testRunner.run(mainsuite)
# set exit code accordingly to test results
sys.exit(not result.wasSuccessful())
|