s4-python: Split up ensure_external_module.
authorJelmer Vernooij <jelmer@samba.org>
Thu, 9 Dec 2010 18:45:37 +0000 (19:45 +0100)
committerJelmer Vernooij <jelmer@samba.org>
Fri, 10 Dec 2010 02:04:06 +0000 (03:04 +0100)
source4/scripting/bin/subunitrun
source4/scripting/python/samba/__init__.py

index 72f6429188e62db6c56324b9ea1625e88283f21a..87519d56617d45c11cebedd3193e9609e3bdbe8f 100755 (executable)
@@ -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] <tests>")
 credopts = options.CredentialsOptions(parser)
index bd7628993ebe85931f7b7eddae99d6da4ddd25ae..f88ac74dcabc235b94621025b49dbdfedf033bb5 100644 (file)
@@ -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