From 33b31bea1afa1f6a7a91d5a164eb599f61f74e89 Mon Sep 17 00:00:00 2001 From: Alex Waterman Date: Fri, 25 Oct 2019 11:58:49 -0700 Subject: [PATCH] scripts: rfr: Fix merge commit bug The file +/- computation in the function that generates the email message text expects there to be files present in the git/gerrit commit object. But for merge commits there are no files present in the merge commit itself. A max() function ended up getting an empty list as an argument and then caused a crash. Fix this by checking to make sure there's actually files present in this list before passing it on to max(). If there are no files then just continue. Change-Id: Icd74234676ff3be6edb7fe65913970fd7a0aaff1 Signed-off-by: Alex Waterman Reviewed-on: https://git-master.nvidia.com/r/2226035 Reviewed-by: Thomas Fleury GVS: Gerrit_Virtual_Submit Reviewed-by: mobile promotions Tested-by: mobile promotions --- scripts/rfr | 24 +++++++++++++++++------- 1 file changed, 17 insertions(+), 7 deletions(-) diff --git a/scripts/rfr b/scripts/rfr index 701630468..57ad96342 100755 --- a/scripts/rfr +++ b/scripts/rfr @@ -302,18 +302,28 @@ Thanks! for c in commits_info: # note: x['deletions'] is negative (or zero) files = c['currentPatchSet']['files'] - width = max([ - len(x['file']) for x in files if x['file'] != u'/COMMIT_MSG']) - file_template = "{name: <{width}} | {sum:<3} (+{adds: <3} -{dels: <3})" - files_changed_desc = [file_template.format( + file_widths = [ + len(x['file']) for x in files if x['file'] != u'/COMMIT_MSG'] + + # For merge commits there are no files in the commit itself. So this + # causes the below max() operation to choke. Given that there are no + # files it makes little sense for us to try and fill in any file + # details! + if file_widths: + width = max(file_widths) + file_template = ("{name: <{width}} | " + + "{sum:<3} (+{adds: <3} -{dels: <3})") + files_changed_desc = [file_template.format( name=x['file'], width=width, sum=x['insertions'] - x['deletions'], adds=x['insertions'], dels=-x['deletions']) - for x in files - if x['file'] != u'/COMMIT_MSG' - ] + for x in files if x['file'] != u'/COMMIT_MSG' + ] + else: + files_changed_desc = '' + cmt_verbose += cmt_template.format(url=c['url'], author=c['owner']['name'], cmtmsg=indent_lines(