Index: build/android/test_wrapper/test_runner_wrapper.py |
diff --git a/build/android/test_wrapper/test_runner_wrapper.py b/build/android/test_wrapper/test_runner_wrapper.py |
new file mode 100755 |
index 0000000000000000000000000000000000000000..e405cb68169a667ef713e079f30f2173105b7571 |
--- /dev/null |
+++ b/build/android/test_wrapper/test_runner_wrapper.py |
@@ -0,0 +1,57 @@ |
+#!/usr/bin/env python |
+# Copyright 2016 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 argparse |
+import sys |
+import os |
+import subprocess |
+import logging |
+ |
ghost stip (do not use)
2016/07/27 01:14:18
nit: two newlines before top level declarations
nicholaslin
2016/07/27 19:08:06
Done.
|
+def CommandParser(): |
+ # Parses the command line arguments being passed in |
+ parser = argparse.ArgumentParser() |
+ parser.add_argument('--test-runner-command', |
ghost stip (do not use)
2016/07/27 01:14:17
so I think we have to redo this a bit. we should s
nicholaslin
2016/07/27 19:08:06
Do we need a test_command argument? Placing all lo
ghost stip (do not use)
2016/07/29 01:09:07
I'd prefer using the named positional argument and
|
+ help=('Command line arguments to run android tests')) |
+ parser.add_argument('--logdog-command', |
+ help=('Logdog command line arguments')) |
+ return parser |
+ |
ghost stip (do not use)
2016/07/27 01:14:17
newline
nicholaslin
2016/07/27 19:08:05
Done.
|
+def LogdogParser(): |
+ # Parses the useful logdog flags for generating the URL |
+ # This includes the project, prefix, and name flags |
+ parser = argparse.ArgumentParser() |
+ parser.add_argument('-project') |
ghost stip (do not use)
2016/07/27 01:14:17
add help here, maybe just saying "passed to logdog
nicholaslin
2016/07/27 19:08:05
Specifying the logdog args in the CommandParser ma
|
+ parser.add_argument('-prefix') |
+ parser.add_argument('-name') |
+ return parser |
+ |
ghost stip (do not use)
2016/07/27 01:14:17
newline
nicholaslin
2016/07/27 19:08:06
Done.
|
+def CreateUrl(project, prefix, name): |
+ url_prefix = prefix.replace('/', '%2F') |
+ url = ('https://luci-logdog-dev.appspot.com/v/?s={0}%2F' |
ghost stip (do not use)
2016/07/27 01:14:18
we use % instead of .format():
url = ('https://lu
nicholaslin
2016/07/27 19:08:06
Done.
|
+ '{1}%2F%2B%2F{2}').format(project, url_prefix, name) |
+ return url |
ghost stip (do not use)
2016/07/27 01:14:17
can just make this return ('https://' ....) instea
nicholaslin
2016/07/27 19:08:06
Done.
|
+ |
ghost stip (do not use)
2016/07/27 01:14:18
newline
nicholaslin
2016/07/27 19:08:06
Done.
|
+def main(): |
+ parser = CommandParser() |
+ args, extra_args = parser.parse_known_args(sys.argv[1:]) |
+ test_cmd = args.test_runner_command.split() + extra_args |
+ if args.logdog_command: |
+ subprocess.check_call(test_cmd) |
+ cmd = args.logdog_command |
+ if '${SWARMING_TASK_ID}' in cmd: |
ghost stip (do not use)
2016/07/27 01:14:17
weird, but does give you flexibility in mb.py. I'l
|
+ cmd = cmd.replace('${SWARMING_TASK_ID}', |
+ os.environ.get('SWARMING_TASK_ID')) |
+ cmd = cmd.split() |
ghost stip (do not use)
2016/07/27 01:14:17
this is going to sound nuts but I think we should
nicholaslin
2016/07/27 19:08:06
The new command parser specifies all logdog argume
ghost stip (do not use)
2016/07/29 01:09:07
nope, this was leftover from an older review pass.
|
+ logdog_parser = LogdogParser() |
+ url_args = logdog_parser.parse_known_args(cmd)[0] |
+ logging.basicConfig(level=logging.DEBUG) |
ghost stip (do not use)
2016/07/27 01:14:18
remove lines 49 and 50
nicholaslin
2016/07/27 19:08:06
Done.
|
+ logging.info("NOTE: below arguments are for streaming logcats to logdog") |
+ url = CreateUrl(url_args.project, url_args.prefix, url_args.name) |
+ logging.info('Logcats are located at: %s', url) |
+ return subprocess.call(cmd) |
+ return subprocess.call(test_cmd) |
+ |
+if __name__ == '__main__': |
+ sys.exit(main()) |