summaryrefslogtreecommitdiffstats
path: root/pym/portage/tests/__init__.py
diff options
context:
space:
mode:
authorAlec Warner <antarus@gentoo.org>2007-02-01 18:58:23 +0000
committerAlec Warner <antarus@gentoo.org>2007-02-01 18:58:23 +0000
commitc78d5fc325f9ed1cbac049e2b0bb52948a084e09 (patch)
tree60656e349cd05cee755d5d8eac0eb9c8c46825d2 /pym/portage/tests/__init__.py
parentd50d79b42515ba8c1fb5ccda989641da73f466d0 (diff)
downloadportage-c78d5fc325f9ed1cbac049e2b0bb52948a084e09.tar.gz
portage-c78d5fc325f9ed1cbac049e2b0bb52948a084e09.tar.bz2
portage-c78d5fc325f9ed1cbac049e2b0bb52948a084e09.zip
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
Diffstat (limited to 'pym/portage/tests/__init__.py')
-rw-r--r--pym/portage/tests/__init__.py55
1 files changed, 55 insertions, 0 deletions
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'] ]