@ -1273,7 +1273,7 @@ class Changelist(object):
return args
def RunHook ( self , committing , may_prompt , verbose , parallel , upstream ,
description , all_files , resultdb = False ):
description , all_files , resultdb = False , realm = None ):
""" Calls sys.exit() if the hook fails; returns a HookResults otherwise. """
args = self . _GetCommonPresubmitArgs ( verbose , upstream )
args . append ( ' --commit ' if committing else ' --upload ' )
@ -1292,10 +1292,15 @@ class Changelist(object):
args . extend ( [ ' --description_file ' , description_file ] )
start = time_time ( )
cmd = [ ' vpython ' , PRESUBMIT_SUPPORT ] + args
if resultdb :
cmd = [ ' rdb ' , ' stream ' , ' -new ' ] + cmd
if resultdb and realm :
cmd = [ ' rdb ' , ' stream ' , ' -new ' , ' -realm ' , realm , ' -- ' ] + cmd
elif resultdb :
# TODO (crbug.com/1113463): store realm somewhere and look it up so
# it is not required to pass the realm flag
print ( ' Note: ResultDB reporting will NOT be performed because --realm '
' was not specified. To enable ResultDB, please run the command '
' again with the --realm argument to specify the LUCI realm. ' )
p = subprocess2 . Popen ( cmd )
exit_code = p . wait ( )
@ -1413,7 +1418,8 @@ class Changelist(object):
upstream = base_branch ,
description = change_desc . description ,
all_files = False ,
resultdb = options . resultdb )
resultdb = options . resultdb ,
realm = options . realm )
self . ExtendCC ( hook_results [ ' more_cc ' ] )
print_stats ( git_diff_args )
@ -1864,7 +1870,7 @@ class Changelist(object):
detail = self . _GetChangeDetail ( [ ' LABELS ' ] )
return u ' Commit-Queue ' in detail . get ( ' labels ' , { } )
def CMDLand ( self , force , bypass_hooks , verbose , parallel ):
def CMDLand ( self , force , bypass_hooks , verbose , parallel , resultdb , realm ):
if git_common . is_dirty_git_tree ( ' land ' ) :
return 1
@ -1905,7 +1911,8 @@ class Changelist(object):
upstream = upstream ,
description = description ,
all_files = False ,
resultdb = False )
resultdb = resultdb ,
realm = realm )
self . SubmitIssue ( wait_for_merge = True )
print ( ' Issue %s has been submitted. ' % self . GetIssueURL ( ) )
@ -3831,6 +3838,7 @@ def CMDpresubmit(parser, args):
parser . add_option ( ' --resultdb ' , action = ' store_true ' ,
help = ' Run presubmit checks in the ResultSink environment '
' and send results to the ResultDB database. ' )
parser . add_option ( ' --realm ' , help = ' LUCI realm if reporting to ResultDB ' )
options , args = parser . parse_args ( args )
if not options . force and git_common . is_dirty_git_tree ( ' presubmit ' ) :
@ -3857,7 +3865,8 @@ def CMDpresubmit(parser, args):
upstream = base_branch ,
description = description ,
all_files = options . all ,
resultdb = options . resultdb )
resultdb = options . resultdb ,
realm = options . realm )
return 0
@ -4071,6 +4080,7 @@ def CMDupload(parser, args):
parser . add_option ( ' --resultdb ' , action = ' store_true ' ,
help = ' Run presubmit checks in the ResultSink environment '
' and send results to the ResultDB database. ' )
parser . add_option ( ' --realm ' , help = ' LUCI realm if reporting to ResultDB ' )
orig_args = args
( options , args ) = parser . parse_args ( args )
@ -4217,6 +4227,10 @@ def CMDland(parser, args):
parser . add_option ( ' --parallel ' , action = ' store_true ' ,
help = ' Run all tests specified by input_api.RunTests in all '
' PRESUBMIT files in parallel. ' )
parser . add_option ( ' --resultdb ' , action = ' store_true ' ,
help = ' Run presubmit checks in the ResultSink environment '
' and send results to the ResultDB database. ' )
parser . add_option ( ' --realm ' , help = ' LUCI realm if reporting to ResultDB ' )
( options , args ) = parser . parse_args ( args )
cl = Changelist ( )
@ -4225,8 +4239,8 @@ def CMDland(parser, args):
DieWithError ( ' You must upload the change first to Gerrit. \n '
' If you would rather have `git cl land` upload '
' automatically for you, see http://crbug.com/642759 ' )
return cl . CMDLand ( options . force , options . bypass_hooks ,
options . verbose , options . parallel )
return cl . CMDLand ( options . force , options . bypass_hooks , options . verbose ,
options . parallel , options . resultdb , options . realm )
@subcommand.usage ( ' <patch url or issue id or issue url> ' )