Index: trychange.py |
diff --git a/trychange.py b/trychange.py |
index 4dc3beb831bbcd9b196c3c1962ae3186dfa5522c..9df39f0b04de08d079c7a5201391f8f457264106 100755 |
--- a/trychange.py |
+++ b/trychange.py |
@@ -313,10 +313,18 @@ def _ParseSendChangeOptions(options): |
if options.project: |
values.append(('project', options.project)) |
- for bot in options.bot: |
- values.append(('bot', bot)) |
- for t in options.testfilter: |
- values.append(('testfilter', t)) |
+ filters = ','.join(options.testfilter) |
+ if filters: |
+ for bot in options.bot: |
+ if ':' in bot: |
+ raise ValueError( |
+ 'Can\'t use both --testfilter and --bot builder:test formats ' |
+ 'at the same time') |
+ else: |
+ values.append(('bot', '%s:%s' % (bot, filters))) |
+ else: |
+ for bot in options.bot: |
+ values.append(('bot', bot)) |
return values |
@@ -488,27 +496,11 @@ def GetMungedDiff(path_diff, diff): |
return (diff, changed_files) |
-def TryChange(argv, |
- change, |
- swallow_exception, |
- prog=None, |
- extra_epilog=None): |
- """ |
- Args: |
- argv: Arguments and options. |
- change: Change instance corresponding to the CL. |
- swallow_exception: Whether we raise or swallow exceptions. |
- """ |
+def gen_parser(prog): |
# Parse argv |
parser = optparse.OptionParser(usage=USAGE, |
version=__version__, |
prog=prog) |
- epilog = EPILOG % { 'prog': prog } |
- if extra_epilog: |
- epilog += extra_epilog |
- parser.epilog = epilog |
- # Remove epilog formatting |
- parser.format_epilog = lambda x: parser.epilog |
parser.add_option("-v", "--verbose", action="count", default=0, |
help="Prints debugging infos") |
group = optparse.OptionGroup(parser, "Result and status") |
@@ -636,6 +628,27 @@ def TryChange(argv, |
help="SVN url to use to write the changes in; --use_svn is " |
"implied when using --svn_repo") |
parser.add_option_group(group) |
+ return parser |
+ |
+ |
+def TryChange(argv, |
+ change, |
+ swallow_exception, |
+ prog=None, |
+ extra_epilog=None): |
+ """ |
+ Args: |
+ argv: Arguments and options. |
+ change: Change instance corresponding to the CL. |
+ swallow_exception: Whether we raise or swallow exceptions. |
+ """ |
+ parser = gen_parser(prog) |
+ epilog = EPILOG % { 'prog': prog } |
+ if extra_epilog: |
+ epilog += extra_epilog |
+ parser.epilog = epilog |
+ # Remove epilog formatting |
+ parser.format_epilog = lambda x: parser.epilog |
options, args = parser.parse_args(argv) |