diff options
author | Jelmer Vernooij <jelmer@samba.org> | 2010-12-10 00:47:33 +0100 |
---|---|---|
committer | Jelmer Vernooij <jelmer@samba.org> | 2010-12-10 03:04:06 +0100 |
commit | 636d8cfb423bbdf271df25efbc13c91420ebefe8 (patch) | |
tree | d125b9325125bbb94a5b4d2a31089f7265cb6705 | |
parent | bdf5a49cec064c965c1271d875fc9b474b77f634 (diff) | |
download | samba-636d8cfb423bbdf271df25efbc13c91420ebefe8.tar.gz samba-636d8cfb423bbdf271df25efbc13c91420ebefe8.tar.bz2 samba-636d8cfb423bbdf271df25efbc13c91420ebefe8.zip |
s4-python: Add convenience function for forcibly importing bundled
package.
-rwxr-xr-x | source4/scripting/bin/subunitrun | 6 | ||||
-rw-r--r-- | source4/scripting/python/samba/__init__.py | 15 |
2 files changed, 17 insertions, 4 deletions
diff --git a/source4/scripting/bin/subunitrun b/source4/scripting/bin/subunitrun index 9717c9e345..21243a73ec 100755 --- a/source4/scripting/bin/subunitrun +++ b/source4/scripting/bin/subunitrun @@ -29,10 +29,8 @@ samba.ensure_external_module("subunit", "subunit/python") try: from subunit.run import SubunitTestRunner, TestProgram except ImportError: - del sys.modules["subunit"] - if "subunit.run" in sys.modules: - del sys.modules["subunit.run"] - samba.import_bundled_package("subunit", "subunit/python") + samba.force_bundled_package("testtools", "testtools") + samba.force_bundled_package("subunit", "subunit/python") from subunit.run import SubunitTestRunner, TestProgram import samba.getopt as options import samba.tests diff --git a/source4/scripting/python/samba/__init__.py b/source4/scripting/python/samba/__init__.py index b6c53f4b2c..6fcac16691 100644 --- a/source4/scripting/python/samba/__init__.py +++ b/source4/scripting/python/samba/__init__.py @@ -324,6 +324,21 @@ def import_bundled_package(modulename, location): "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. |