From: Sebastian Luther Date: Sun, 8 Aug 2010 20:52:50 +0000 (+0200) Subject: Tests: Let ./runTests take files as argument to run only the test in these files X-Git-Tag: v2.2_rc68~359 X-Git-Url: http://git.tremily.us/?a=commitdiff_plain;h=fef6bc0af3f527ded24fd82465383f363865e4b6;p=portage.git Tests: Let ./runTests take files as argument to run only the test in these files --- diff --git a/pym/portage/tests/__init__.py b/pym/portage/tests/__init__.py index 393ecf78c..bd41f1ee8 100644 --- a/pym/portage/tests/__init__.py +++ b/pym/portage/tests/__init__.py @@ -26,6 +26,10 @@ def main(): basedir = os.path.dirname(os.path.realpath(__file__)) testDirs = [] + if len(sys.argv) > 1: + suite.addTests(getTestFromCommandLine(sys.argv[1:], basedir)) + return TextTestRunner(verbosity=2).run(suite) + # the os.walk help mentions relative paths as being quirky # I was tired of adding dirs to the list, so now we add __test__ # to each dir we want tested. @@ -52,6 +56,29 @@ def my_import(name): mod = getattr(mod, comp) return mod +def getTestFromCommandLine(args, base_path): + ret = [] + for arg in args: + realpath = os.path.realpath(arg) + path = os.path.dirname(realpath) + f = realpath[len(path)+1:] + + if not f.startswith("test") or not f.endswith(".py"): + raise Exception("Invalid argument: '%s'" % arg) + + mymodule = f[:-3] + + parent_path = path[len(base_path)+1:] + parent_module = ".".join(("portage", "tests", parent_path)) + parent_module = parent_module.replace('/', '.') + result = [] + + # Make the trailing / a . for module importing + modname = ".".join((parent_module, mymodule)) + mod = my_import(modname) + ret.append(unittest.TestLoader().loadTestsFromModule(mod)) + return ret + def getTests(path, base_path): """