| Index: git_cl.py
|
| diff --git a/git_cl.py b/git_cl.py
|
| index 48fb848c8f20935b2ba81723818809ee35bebfab..bca8760d14b797f1917269ff90c5a1170049f224 100755
|
| --- a/git_cl.py
|
| +++ b/git_cl.py
|
| @@ -1510,6 +1510,92 @@ def CMDtree(parser, args):
|
| return 0
|
|
|
|
|
| +def CMDtry(parser, args):
|
| + """Triggers a try job through Rietveld."""
|
| + group = optparse.OptionGroup(parser, "Try job options")
|
| + group.add_option(
|
| + "-b", "--bot", action="append",
|
| + help=("IMPORTANT: specify ONE builder per --bot flag. Use it multiple "
|
| + "times to specify multiple builders. ex: "
|
| + "'-bwin_rel:ui_tests,webkit_unit_tests -bwin_layout'. See "
|
| + "the try server waterfall for the builders name and the tests "
|
| + "available. Can also be used to specify gtest_filter, e.g. "
|
| + "-bwin_rel:base_unittests:ValuesTest.*Value"))
|
| + group.add_option(
|
| + "-r", "--revision",
|
| + help="Revision to use for the try job; default: the "
|
| + "revision will be determined by the try server; see "
|
| + "its waterfall for more info")
|
| + group.add_option(
|
| + "-c", "--clobber", action="store_true", default=False,
|
| + help="Force a clobber before building; e.g. don't do an "
|
| + "incremental build")
|
| + group.add_option(
|
| + "--project",
|
| + help="Override which project to use. Projects are defined "
|
| + "server-side to define what default bot set to use")
|
| + group.add_option(
|
| + "-t", "--testfilter", action="append", default=[],
|
| + help=("Apply a testfilter to all the selected builders. Unless the "
|
| + "builders configurations are similar, use multiple "
|
| + "--bot <builder>:<test> arguments."))
|
| + group.add_option(
|
| + "-n", "--name", help="Try job name; default to current branch name")
|
| + parser.add_option_group(group)
|
| + options, args = parser.parse_args(args)
|
| +
|
| + if args:
|
| + parser.error('Unknown arguments: %s' % args)
|
| +
|
| + cl = Changelist()
|
| + if not cl.GetIssue():
|
| + parser.error('Need to upload first')
|
| +
|
| + if not options.name:
|
| + options.name = cl.GetBranch()
|
| +
|
| + # Process --bot and --testfilter.
|
| + if not options.bot:
|
| + # Get try slaves from PRESUBMIT.py files if not specified.
|
| + change = cl.GetChange(cl.GetUpstreamBranch(), None)
|
| + options.bot = presubmit_support.DoGetTrySlaves(
|
| + change,
|
| + change.LocalPaths(),
|
| + settings.GetRoot(),
|
| + None,
|
| + None,
|
| + options.verbose,
|
| + sys.stdout)
|
| + if not options.bot:
|
| + parser.error('No default try builder to try, use --bot')
|
| +
|
| + builders_and_tests = {}
|
| + for bot in options.bot:
|
| + if ':' in bot:
|
| + builder, tests = bot.split(':', 1)
|
| + builders_and_tests.setdefault(builder, []).extend(tests.split(','))
|
| + elif ',' in bot:
|
| + parser.error('Specify one bot per --bot flag')
|
| + else:
|
| + builders_and_tests.setdefault(bot, []).append('defaulttests')
|
| +
|
| + if options.testfilter:
|
| + forced_tests = sum((t.split(',') for t in options.testfilter), [])
|
| + builders_and_tests = dict(
|
| + (b, forced_tests) for b, t in builders_and_tests.iteritems()
|
| + if t != ['compile'])
|
| +
|
| + patchset = cl.GetPatchset()
|
| + if not cl.GetPatchset():
|
| + properties = cl.RpcServer().get_issue_properties(cl.GetIssue(), False)
|
| + patchset = properties['patchsets'][-1]
|
| +
|
| + cl.RpcServer().trigger_try_jobs(
|
| + cl.GetIssue(), patchset, options.name, options.clobber, options.revision,
|
| + builders_and_tests)
|
| + return 0
|
| +
|
| +
|
| @usage('[new upstream branch]')
|
| def CMDupstream(parser, args):
|
| """prints or sets the name of the upstream branch, if any"""
|
|
|