subunitrun: Extend hack to cope with older system subunit run installs.
[metze/samba/wip.git] / source4 / scripting / bin / subunitrun
index 6f1086ad376c653087cb703a78dd61dd2e351c35..9717c9e345ad8b3ce78cc4194783f9df0fe09135 100755 (executable)
@@ -1,4 +1,4 @@
-#!/usr/bin/python
+#!/usr/bin/env python
 
 # Simple subunit testrunner for python
 # Copyright (C) Jelmer Vernooij <jelmer@samba.org> 2007
@@ -22,27 +22,34 @@ import sys
 # Find right directory when running from source tree
 sys.path.insert(0, "bin/python")
 
-from subunit import SubunitTestRunner
-from unittest import TestProgram
 import optparse
-import os
-from samba import param
+import samba
+samba.ensure_external_module("testtools", "testtools")
+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")
+    from subunit.run import SubunitTestRunner, TestProgram
 import samba.getopt as options
 import samba.tests
 
+
 parser = optparse.OptionParser("subunitrun [options] <tests>")
 credopts = options.CredentialsOptions(parser)
 parser.add_option_group(credopts)
-sambaopts = options.SambaOptions(parser)
-parser.add_option_group(sambaopts)
-parser.add_option_group(options.VersionOptions(parser))
-
-args = parser.parse_args()[1]
+parser.add_option('-l', '--list', dest='listtests', default=False,
+                  help='List tests rather than running them.',
+                  action="store_true")
 
-samba.tests.cmdline_loadparm = sambaopts.get_loadparm()
-samba.tests.cmdline_credentials = credopts.get_credentials(samba.tests.cmdline_loadparm)
+opts, args = parser.parse_args()
 
-param.cvar.default_config = samba.tests.cmdline_loadparm
+samba.tests.cmdline_credentials = credopts.get_credentials(samba.tests.env_loadparm())
+if opts.listtests:
+    args.insert(0, "--list")
 
 runner = SubunitTestRunner()
-program = TestProgram(module=None, argv=[sys.argv[0]] + args, testRunner=runner)
+program = TestProgram(module=None, argv=[sys.argv[0]] + args, testRunner=runner, stdout=sys.stdout)