subunitrun: Use unittest.TestProgram if subunit.TestProgram is not
[metze/samba/wip.git] / source4 / scripting / bin / subunitrun
index 11ac426589c718c8b6dbbe7ce8f60a47d26440dd..bc7b42c610c38d9f9626e22198ca5d37c548f1e5 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
 # along with this program.  If not, see <http://www.gnu.org/licenses/>.
 #
 
-from subunit import SubunitTestRunner
 import sys
-from unittest import TestProgram
+
+# Find right directory when running from source tree
+sys.path.insert(0, "bin/python")
+
+import optparse
+import samba
+samba.ensure_external_module("testtools", "testtools")
+samba.ensure_external_module("subunit", "subunit/python")
+from subunit.run import SubunitTestRunner
+import samba.getopt as options
+import samba.tests
+
+
+parser = optparse.OptionParser("subunitrun [options] <tests>")
+credopts = options.CredentialsOptions(parser)
+parser.add_option_group(credopts)
+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 getattr(opts, "listtests", False):
+    args.insert(0, "--list")
 
 runner = SubunitTestRunner()
-TestProgram(module=None, argv=sys.argv, testRunner=runner)
+program = TestProgram(module=None, argv=[sys.argv[0]] + args, testRunner=runner)