From 4571b94e7b04acaa7f462262dac509843287e4af Mon Sep 17 00:00:00 2001 From: Jelmer Vernooij Date: Thu, 9 Dec 2010 19:45:37 +0100 Subject: [PATCH] s4-python: Split up ensure_external_module. --- source4/scripting/bin/subunitrun | 3 +-- source4/scripting/python/samba/__init__.py | 30 ++++++++++++++++------ 2 files changed, 23 insertions(+), 10 deletions(-) diff --git a/source4/scripting/bin/subunitrun b/source4/scripting/bin/subunitrun index 72f6429188e6..87519d56617d 100755 --- a/source4/scripting/bin/subunitrun +++ b/source4/scripting/bin/subunitrun @@ -22,15 +22,14 @@ import sys # Find right directory when running from source tree sys.path.insert(0, "bin/python") -from subunit.run import TestProgram import optparse import samba samba.ensure_external_module("testtools", "testtools") samba.ensure_external_module("subunit", "subunit/python") +from subunit.run import SubunitTestRunner, TestProgram import samba.getopt as options import samba.tests -from subunit.run import SubunitTestRunner parser = optparse.OptionParser("subunitrun [options] ") credopts = options.CredentialsOptions(parser) diff --git a/source4/scripting/python/samba/__init__.py b/source4/scripting/python/samba/__init__.py index bd7628993ebe..f88ac74dcabc 100644 --- a/source4/scripting/python/samba/__init__.py +++ b/source4/scripting/python/samba/__init__.py @@ -304,6 +304,26 @@ def valid_netbios_name(name): return True +def import_bundled_package(modulename, location): + """Import the bundled version of a package. + + :note: This should only be called if the system version of the package + is not adequate. + + :param modulename: Module name to import + :param location: Location to add to sys.path (can be relative to + ${srcdir}/lib) + """ + if in_source_tree(): + sys.path.insert(0, + os.path.join(os.path.dirname(__file__), + "../../../../lib", location)) + __import__(modulename) + else: + sys.modules[modulename] = __import__( + "samba.external.%s" % modulename, fromlist=["samba.external"]) + + def ensure_external_module(modulename, location): """Add a location to sys.path if an external dependency can't be found. @@ -314,14 +334,8 @@ def ensure_external_module(modulename, location): try: __import__(modulename) except ImportError: - if in_source_tree(): - sys.path.insert(0, - os.path.join(os.path.dirname(__file__), - "../../../../lib", location)) - __import__(modulename) - else: - sys.modules[modulename] = __import__( - "samba.external.%s" % modulename, fromlist=["samba.external"]) + import_bundled_package(modulename) + from samba import _glue version = _glue.version -- 2.34.1