text: #! /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())
  