# tests/__init__.py -- Portage Unit Test functionality # Copyright 2006 Gentoo Foundation # Distributed under the terms of the GNU General Public License v2 # $Id$ import os, unittest def main(): testDirs = ["portage", "portage_util","portage_versions", "portage_dep"] suite = unittest.TestSuite() basedir = os.path.dirname(__file__) for mydir in testDirs: suite.addTests(getTests(os.path.join(basedir, mydir), basedir) ) return unittest.TextTestRunner(verbosity=2).run(suite) def my_import(name): mod = __import__(name) components = name.split('.') for comp in components[1:]: mod = getattr(mod, comp) return mod def getTests( path, base_path ): """ path is the path to a given subdir ( 'portage/' for example) This does a simple filter on files in that dir to give us modules to import """ import os files = os.listdir( path ) files = [ f[:-3] for f in files if f.startswith("test_") and f.endswith(".py") ] parent_path = path[len(base_path)+1:] parent_module = ".".join(("tests", parent_path)) result = [] for mymodule in files: try: # Make the trailing / a . for module importing modname = ".".join((parent_module, mymodule)) mod = my_import(modname) result.append( unittest.TestLoader().loadTestsFromModule(mod) ) except ImportError: raise return result