From c78d5fc325f9ed1cbac049e2b0bb52948a084e09 Mon Sep 17 00:00:00 2001 From: Alec Warner Date: Thu, 1 Feb 2007 18:58:23 +0000 Subject: A somewhat more intelligent layout, move tests into portaage namespace so we can import them easier, seems to be a more common layout from what I've seen. Also rewrite the test runner to work with new layout svn path=/main/trunk/; revision=5863 --- pym/portage/tests/__init__.py | 55 +++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 55 insertions(+) create mode 100644 pym/portage/tests/__init__.py (limited to 'pym/portage/tests/__init__.py') diff --git a/pym/portage/tests/__init__.py b/pym/portage/tests/__init__.py new file mode 100644 index 000000000..389cd2417 --- /dev/null +++ b/pym/portage/tests/__init__.py @@ -0,0 +1,55 @@ +# 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(("portage","tests", parent_path)) + parent_module = parent_module.replace('/','.') + 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 + +test_cpvs = ['sys-apps/portage','virtual/portage'] +test_versions = ['1.0', '1.0-r1','2.3_p4','1.0_alpha57'] +test_slots = [ None, '1','gentoo-sources-2.6.17','spankywashere'] +test_usedeps = ['foo','-bar', ['foo','bar'],['foo','-bar'] ] -- cgit v1.2.3-1-g7c22