Add run_mojo_python_tests.py so that we can run the python tests on the bots.

The bots would strongly prefer to call python directly rather than route
through the mojob.sh shell script.

R=viettrungluu@chromium.org, sky@chromium.org
BUG=364709

Review URL: https://codereview.chromium.org/241713003

git-svn-id: svn://svn.chromium.org/chrome/trunk/src@264743 0039d316-1c4b-4281-b951-d872f2087c98


CrOS-Libchrome-Original-Commit: 45cba48ea96ef662998d812f33d4d4f0cd70cf55
diff --git a/mojo/tools/mojob.sh b/mojo/tools/mojob.sh
index 291012c..b870cd1 100755
--- a/mojo/tools/mojob.sh
+++ b/mojo/tools/mojob.sh
@@ -61,9 +61,7 @@
 }
 
 do_pytests() {
-  echo "Running Python unit tests under mojo/public/tools/bindings/pylib ..."
-  python -m unittest \
-      discover -s mojo/public/tools/bindings/pylib -p "*_unittest.py"
+  python mojo/tools/run_mojo_python_tests.py || exit 1
 }
 
 do_gyp() {
diff --git a/mojo/tools/run_mojo_python_tests.py b/mojo/tools/run_mojo_python_tests.py
new file mode 100755
index 0000000..48b723c
--- /dev/null
+++ b/mojo/tools/run_mojo_python_tests.py
@@ -0,0 +1,40 @@
+#!/bin/python
+# Copyright 2014 The Chromium Authors. All rights reserved.
+# Use of this source code is governed by a BSD-style license that can be
+# found in the LICENSE file.
+
+import optparse
+import os
+import sys
+import unittest
+
+
+# TODO(dpranke): crbug.com/364709 . We should add the ability to return
+# JSONified results data for the bots.
+
+
+def main():
+  parser = optparse.OptionParser()
+  parser.add_option('-v', '--verbose', action='count', default=0)
+  options, args = parser.parse_args()
+  if args:
+    parser.usage()
+    return 1
+
+  chromium_src_dir = os.path.join(os.path.dirname(__file__),
+                                  os.pardir,
+                                  os.pardir)
+
+  loader = unittest.loader.TestLoader()
+  print "Running Python unit tests under mojo/public/tools/bindings/pylib ..."
+  suite = loader.discover(os.path.join(chromium_src_dir, 'mojo', 'public',
+                                      'tools', 'bindings', 'pylib'),
+                          pattern='*_unittest.py')
+
+  runner = unittest.runner.TextTestRunner(verbosity=(options.verbose+1))
+  result = runner.run(suite)
+  return 0 if result.wasSuccessful() else 1
+
+
+if __name__ == '__main__':
+  sys.exit(main())