Kaydet (Commit) 7d9e7215 authored tarafından Thomas Heller's avatar Thomas Heller

The -x <test1[,test2...]> flag allows to exclude tests.

üst 10cfc4b1
...@@ -50,11 +50,16 @@ def find_package_modules(package, mask): ...@@ -50,11 +50,16 @@ def find_package_modules(package, mask):
if fnmatch.fnmatchcase(fnm, mask): if fnmatch.fnmatchcase(fnm, mask):
yield "%s.%s" % (package.__name__, os.path.splitext(fnm)[0]) yield "%s.%s" % (package.__name__, os.path.splitext(fnm)[0])
def get_tests(package, mask, verbosity): def get_tests(package, mask, verbosity, exclude):
"""Return a list of skipped test modules, and a list of test cases.""" """Return a list of skipped test modules, and a list of test cases."""
tests = [] tests = []
skipped = [] skipped = []
for modname in find_package_modules(package, mask): for modname in find_package_modules(package, mask):
if modname.split(".")[-1] in exclude:
skipped.append(modname)
if verbosity > 1:
print >> sys.stderr, "Skipped %s: excluded" % modname
continue
try: try:
mod = __import__(modname, globals(), locals(), ['*']) mod = __import__(modname, globals(), locals(), ['*'])
except ResourceDenied, detail: except ResourceDenied, detail:
...@@ -151,12 +156,13 @@ class TestRunner(unittest.TextTestRunner): ...@@ -151,12 +156,13 @@ class TestRunner(unittest.TextTestRunner):
def main(*packages): def main(*packages):
try: try:
opts, args = getopt.getopt(sys.argv[1:], "rqvu:") opts, args = getopt.getopt(sys.argv[1:], "rqvu:x:")
except getopt.error: except getopt.error:
return usage() return usage()
verbosity = 1 verbosity = 1
search_leaks = False search_leaks = False
exclude = []
for flag, value in opts: for flag, value in opts:
if flag == "-q": if flag == "-q":
verbosity -= 1 verbosity -= 1
...@@ -171,17 +177,19 @@ def main(*packages): ...@@ -171,17 +177,19 @@ def main(*packages):
search_leaks = True search_leaks = True
elif flag == "-u": elif flag == "-u":
use_resources.extend(value.split(",")) use_resources.extend(value.split(","))
elif flag == "-x":
exclude.append(value.split(","))
mask = "test_*.py" mask = "test_*.py"
if args: if args:
mask = args[0] mask = args[0]
for package in packages: for package in packages:
run_tests(package, mask, verbosity, search_leaks) run_tests(package, mask, verbosity, search_leaks, exclude)
def run_tests(package, mask, verbosity, search_leaks): def run_tests(package, mask, verbosity, search_leaks, exclude):
skipped, testcases = get_tests(package, mask, verbosity) skipped, testcases = get_tests(package, mask, verbosity, exclude)
runner = TestRunner(verbosity=verbosity) runner = TestRunner(verbosity=verbosity)
suites = [unittest.makeSuite(o) for o in testcases] suites = [unittest.makeSuite(o) for o in testcases]
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment