[Libreoffice-commits] dev-tools.git: 2 commits - qa/bugzillaAutomation.py qa/bugzillaChecker.py

Libreoffice Gerrit user logerrit at kemper.freedesktop.org
Thu May 9 15:56:08 UTC 2019


 qa/bugzillaAutomation.py |   66 ++++++++++++++++++++++++++++++++++++++++++-----
 qa/bugzillaChecker.py    |   11 -------
 2 files changed, 61 insertions(+), 16 deletions(-)

New commits:
commit fb079edcc027c9e4bf5966484e2a1db003177b0a
Author:     Xisco Fauli <xiscofauli at libreoffice.org>
AuthorDate: Thu May 9 17:55:25 2019 +0200
Commit:     Xisco Fauli <xiscofauli at libreoffice.org>
CommitDate: Thu May 9 17:55:25 2019 +0200

    QA: this can go now

diff --git a/qa/bugzillaChecker.py b/qa/bugzillaChecker.py
index 8845958..c1b546f 100755
--- a/qa/bugzillaChecker.py
+++ b/qa/bugzillaChecker.py
@@ -287,21 +287,12 @@ def analyze_bugzilla_checkers(statList, bugzillaData, cfg):
 
             commentMail = None
             comments = row['comments'][1:]
-            bSameAuthor = True
             for idx, comment in enumerate(comments):
                 commentMail = comment['creator']
                 commentDate = datetime.datetime.strptime(comment['time'], "%Y-%m-%dT%H:%M:%SZ")
 
                 common.util_check_bugzilla_mail(statList, commentMail, '', commentDate, rowId)
 
-                if bSameAuthor and commentMail != creatorMail:
-                    bSameAuthor = False
-
-            if bSameAuthor and rowStatus == 'UNCONFIRMED' and \
-                    datetime.datetime.strptime(row['last_change_time'], "%Y-%m-%dT%H:%M:%SZ") < cfg['retestUnconfirmedPeriod']:
-                value = [ rowId, row['last_change_time'], creatorMail ]
-                util_add_to_result(lResults, 'unconfirmed_without_comments', value)
-
             if len(comments) > 0:
                 if rowStatus == 'UNCONFIRMED':
                     if comments[-1]['creator'] != creatorMail and \
@@ -409,7 +400,7 @@ def analyze_bugzilla_checkers(statList, bugzillaData, cfg):
                     if dKey == 'inactive_assignee':
                         if dValue[idx][1] >= cfg['coloredInactiveAssignedPeriod']:
                             background = Back.GREEN
-                    elif dKey == 'unconfirmed_last_comment_not_from_reporter' or dKey == 'unconfirmed_without_comments':
+                    elif dKey == 'unconfirmed_last_comment_not_from_reporter':
                         if dValue[idx][1] >= cfg['coloredRetestUnconfirmedPeriod']:
                             background = Back.GREEN
                     elif dKey == 'unconfirmed_last_comment_from_reporter':
commit 145c05bd7bc9ed8e765061456fdfa0c579bbe618
Author:     Xisco Fauli <xiscofauli at libreoffice.org>
AuthorDate: Thu May 9 17:46:35 2019 +0200
Commit:     Xisco Fauli <xiscofauli at libreoffice.org>
CommitDate: Thu May 9 17:46:35 2019 +0200

    QA: Tag unconfirmed bugs inactive for 2 weeks...
    
    ...that need a comment

diff --git a/qa/bugzillaAutomation.py b/qa/bugzillaAutomation.py
index dc6ba3b..7603f44 100755
--- a/qa/bugzillaAutomation.py
+++ b/qa/bugzillaAutomation.py
@@ -20,6 +20,8 @@ needInfoPingPeriodDays = 180
 
 needInfoFollowUpPingPeriodDays = 30
 
+needsCommentPeriodDays = 14
+
 #Path to addObsolete.txt
 addObsoleteDir = '/home/xisco/dev-tools/qa'
 
@@ -33,7 +35,12 @@ def util_create_statList():
         'untouched': {},
         'needInfoPing': {},
         'needInfoFollowUpPing': {},
-        'needInfoToUnconfirmed': {}
+        'needInfoToUnconfirmed': {},
+        'needsComment':
+            {
+                'add': [],
+                'remove': []
+            }
     }
 def analyze_bugzilla(statList, bugzillaData, cfg):
     print("Analyze bugzilla\n", end="", flush=True)
@@ -60,6 +67,7 @@ def analyze_bugzilla(statList, bugzillaData, cfg):
                 statList['needInfoPing'][rowId] = rowCreator
 
             comments = row['comments'][1:]
+            bSameAuthor = True
             for idx, comment in enumerate(comments):
                 #Check for duplicated comments
                 if idx > 0 and comment['text'] == comments[idx-1]['text']:
@@ -73,6 +81,17 @@ def analyze_bugzilla(statList, bugzillaData, cfg):
                         'MassPing-NeedInfo' in comment["text"]):
                     statList['tags']['addObsolete'].add(comment["id"])
 
+                if bSameAuthor and comment['creator'] != row['creator']:
+                    bSameAuthor = False
+
+            if bSameAuthor and rowStatus == 'UNCONFIRMED' and 'QA:needsComment' not in row['whiteboard'] and \
+                    datetime.datetime.strptime(row['last_change_time'], "%Y-%m-%dT%H:%M:%SZ") < cfg['needsCommentPeriod']:
+                statList['needsComment']['add'].append(rowId)
+
+            elif not bSameAuthor and 'QA:needsComment' in row['whiteboard']:
+                statList['needsComment']['remove'].append(rowId)
+
+
             if len(comments) > 0:
                 if rowStatus == 'NEEDINFO' and \
                         comments[-1]['creator'] == row['creator']:
@@ -108,7 +127,7 @@ def analyze_bugzilla(statList, bugzillaData, cfg):
                             row['product'] == 'Impress Remote') and row['severity'] != 'enhancement':
                         statList['untouched'][rowId] = rowCreator
 
-def post_comments_to_bugzilla(statList, keyInStatList, commentId, comment, addFirstLine, changeCommand=""):
+def post_comment(statList, keyInStatList, commentId, comment, addFirstLine, changeCommand=""):
     for bugId, creator in statList[keyInStatList].items():
         bugId = str(bugId)
 
@@ -134,27 +153,60 @@ def post_comments_to_bugzilla(statList, keyInStatList, commentId, comment, addFi
                 print('Bug: ' + bugId + ' - ' + changeCommand)
                 rPut.close()
 
+def update_whiteboard(statList, whiteboardTag):
+    for action, listOfBugs in statList[whiteboardTag].items():
+        for bugId in listOfBugs:
+            bugId = str(bugId)
+
+            urlGet = 'https://bugs.documentfoundation.org/rest/bug/' + bugId + '?api_key=' + cfg['configQA']['api-key']
+            rGet = requests.get(urlGet)
+            rawData = json.loads(rGet.text)
+            rGet.close()
+            whiteboard = rawData['bugs'][0]['whiteboard']
+
+            doRequest = False
+            tag = 'QA:' + whiteboardTag
+            if action == 'add':
+                if rawData['bugs'][0]['status'] == 'UNCONFIRMED' and tag not in whiteboard :
+                    doRequest = True
+                    whiteboard = whiteboard + ' ' + tag
+            elif action == 'remove':
+                if tag in whiteboard :
+                    doRequest = True
+                    whiteboard = whiteboard.replace(tag, '').strip()
+
+            if doRequest :
+                command = '{"whiteboard" : "' + whiteboard.strip() + '"}'
+                urlPut = 'https://bugs.documentfoundation.org/rest/bug/' + bugId + '?api_key=' + cfg['configQA']['api-key']
+                rPut = requests.put(urlPut, command.encode('utf-8'))
+                print('Bug: ' + bugId + ' - ' + command)
+                rPut.close()
+
+def automated_needsCommentFromQA(statList):
+    print('== Add tag to UNCONFIRMED bug that needs a comment ==')
+    update_whiteboard(statList, "needsComment")
+
 def automated_needInfoToUnconfirmed(statList):
 
     print('== Move NEEDINFO to UNCONFIRMED ==')
     command = '{"status" : "UNCONFIRMED"}'
-    post_comments_to_bugzilla(statList, "needInfoToUnconfirmed", 'NeedInfo-To-Unconfirmed', comments.needInfoToUnconfirmedComment, False, command)
+    post_comment(statList, "needInfoToUnconfirmed", 'NeedInfo-To-Unconfirmed', comments.needInfoToUnconfirmedComment, False, command)
 
 def automated_needInfoFollowUpPing(statList):
 
     print('== NEEDINFO FollowUp Ping ==')
     command = '{"status" : "RESOLVED", "resolution" : "INSUFFICIENTDATA"}'
-    post_comments_to_bugzilla(statList, "needInfoFollowUpPing", 'MassPing-NeedInfo-FollowUp', comments.needInfoFollowUpPingComment, True, command)
+    post_comment(statList, "needInfoFollowUpPing", 'MassPing-NeedInfo-FollowUp', comments.needInfoFollowUpPingComment, True, command)
 
 def automated_needInfoPing(statList):
 
     print('== NEEDINFO Ping ==')
-    post_comments_to_bugzilla(statList, "needInfoPing", 'MassPing-NeedInfo-Ping', comments.needInfoPingComment, True)
+    post_comment(statList, "needInfoPing", 'MassPing-NeedInfo-Ping', comments.needInfoPingComment, True)
 
 def automated_untouched(statList):
 
     print('== Untouched bugs ==')
-    post_comments_to_bugzilla(statList, "untouched", 'MassPing-UntouchedBug', comments.untouchedPingComment, True)
+    post_comment(statList, "untouched", 'MassPing-UntouchedBug', comments.untouchedPingComment, True)
 
 def automated_tagging(statList):
     #tags are sometimes not saved in bugzilla_dump.json
@@ -198,6 +250,7 @@ def runCfg():
     cfg['untouchedPeriod'] = common.util_convert_days_to_datetime(untouchedPeriodDays)
     cfg['needInfoPingPeriod'] = common.util_convert_days_to_datetime(needInfoPingPeriodDays)
     cfg['needInfoFollowUpPingPeriod'] = common.util_convert_days_to_datetime(needInfoFollowUpPingPeriodDays)
+    cfg['needsCommentPeriod'] = common.util_convert_days_to_datetime(needsCommentPeriodDays)
 
     return cfg
 
@@ -217,3 +270,4 @@ if __name__ == '__main__':
     automated_needInfoPing(statList)
     automated_needInfoFollowUpPing(statList)
     automated_needInfoToUnconfirmed(statList)
+    automated_needsCommentFromQA(statList)


More information about the Libreoffice-commits mailing list