1
0
mirror of https://github.com/samba-team/samba.git synced 2025-03-08 04:58:40 +03:00

subunitrun: Use unittest.TestProgram if subunit.TestProgram is not

available.

Autobuild-User: Jelmer Vernooij <jelmer@samba.org>
Autobuild-Date: Fri Dec 10 03:49:03 CET 2010 on sn-devel-104
This commit is contained in:
Jelmer Vernooij 2010-12-10 03:03:18 +01:00
parent 636d8cfb42
commit 10441ed83d
2 changed files with 12 additions and 27 deletions

View File

@ -26,12 +26,7 @@ import optparse
import samba
samba.ensure_external_module("testtools", "testtools")
samba.ensure_external_module("subunit", "subunit/python")
try:
from subunit.run import SubunitTestRunner, TestProgram
except ImportError:
samba.force_bundled_package("testtools", "testtools")
samba.force_bundled_package("subunit", "subunit/python")
from subunit.run import SubunitTestRunner, TestProgram
from subunit.run import SubunitTestRunner
import samba.getopt as options
import samba.tests
@ -39,15 +34,20 @@ import samba.tests
parser = optparse.OptionParser("subunitrun [options] <tests>")
credopts = options.CredentialsOptions(parser)
parser.add_option_group(credopts)
parser.add_option('-l', '--list', dest='listtests', default=False,
help='List tests rather than running them.',
action="store_true")
try:
from subunit.run import TestProgram
except ImportError:
from unittest import TestProgram
else:
parser.add_option('-l', '--list', dest='listtests', default=False,
help='List tests rather than running them.',
action="store_true")
opts, args = parser.parse_args()
samba.tests.cmdline_credentials = credopts.get_credentials(samba.tests.env_loadparm())
if opts.listtests:
if getattr(opts, "listtests", False):
args.insert(0, "--list")
runner = SubunitTestRunner()
program = TestProgram(module=None, argv=[sys.argv[0]] + args, testRunner=runner, stdout=sys.stdout)
program = TestProgram(module=None, argv=[sys.argv[0]] + args, testRunner=runner)

View File

@ -318,27 +318,12 @@ def import_bundled_package(modulename, location):
sys.path.insert(0,
os.path.join(os.path.dirname(__file__),
"../../../../lib", location))
__import__(modulename)
sys.modules[modulename] = __import__(modulename)
else:
sys.modules[modulename] = __import__(
"samba.external.%s" % modulename, fromlist=["samba.external"])
def force_bundled_package(packagename, location):
"""Forcibly use the bundled package.
This will first unload the system module and then load the bundled one.
:param packagename: The package name
:param location: Location to add to sys.path (can be relative to
${srcdir}/lib)
"""
for m in sys.modules.keys():
if m.startswith("%s." % packagename):
del sys.modules[m]
import_bundled_package(packagename, location)
def ensure_external_module(modulename, location):
"""Add a location to sys.path if an external dependency can't be found.