diff --git a/src/gpodder/unittests.py b/src/gpodder/unittests.py index aa4d39f4..4908d36d 100644 --- a/src/gpodder/unittests.py +++ b/src/gpodder/unittests.py @@ -25,20 +25,47 @@ import doctest import unittest import gettext +import sys # Which package and which modules in the package should be tested? package = 'gpodder' modules = ['util', 'libtagupdate'] +coverage_modules = [] suite = unittest.TestSuite() for module in modules: m = __import__('.'.join((package, module)), fromlist=[module]) + coverage_modules.append(m) # Emulate a globally-installed no-op gettext _() function if not hasattr(m, '_'): setattr(m, '_', lambda x: x) suite.addTest(doctest.DocTestSuite(m)) runner = unittest.TextTestRunner(verbosity=2) -runner.run(suite) + +try: + import coverage +except ImportError: + coverage = None + +if coverage is not None: + coverage.erase() + coverage.start() + +result = runner.run(suite) + +if not result.wasSuccessful(): + sys.exit(1) + +if coverage is not None: + coverage.stop() + coverage.report(coverage_modules) + coverage.erase() + +if coverage is None: + print >>sys.stderr, """ + No coverage reporting done (Python module "coverage" is missing) + Please install the python-coverage package to get coverage reporting. + """