From: Daniel Dunbar Date: Sat, 20 Sep 2008 01:43:16 +0000 (+0000) Subject: Make scan-view more robust / friendly when bug reporting fails. X-Git-Url: https://granicus.if.org/sourcecode?a=commitdiff_plain;h=5472249ee4281673c63db466c8670f269803469a;p=clang Make scan-view more robust / friendly when bug reporting fails. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@56382 91177308-0d34-0410-b5e6-96231b3b80d8 --- diff --git a/tools/scan-view/Reporter.py b/tools/scan-view/Reporter.py index a28d0945ac..5bfe446906 100644 --- a/tools/scan-view/Reporter.py +++ b/tools/scan-view/Reporter.py @@ -2,7 +2,14 @@ import subprocess, sys, os -__all__ = ['BugReport', 'getReporters'] +__all__ = ['ReportFailure', 'BugReport', 'getReporters'] + +# + +class ReportFailure(Exception): + """Generic exception for failures in bug reporting.""" + def __init__(self, value): + self.value = value # Collect information about a bug. @@ -135,18 +142,29 @@ class RadarReporter: p = subprocess.Popen(args, stdout=subprocess.PIPE, stderr=subprocess.PIPE) except: - print >>sys.stderr, '%s: SERVER: radar failed'%(sys.argv[0],) - sys.print_exc() - raise + raise ReportFailure("Unable to file radar (AppleScript failure).") data, err = p.communicate() -# print >>sys.stderr, '%s: SERVER: radar report: "%s" "%s"'%(sys.argv[0],data, err) res = p.wait() -# print >>sys.stderr, '%s: SERVER: radar report res: %d'%(sys.argv[0],res,) if res: - raise RuntimeError,'Radar submission failed.' + raise ReportFailure("Unable to file radar (AppleScript failure).") + + try: + values = eval(data) + except: + raise ReportFailure("Unable to process radar results.") - return data.replace('\n','\n
') + # We expect (int: bugID, str: message) + if len(values) != 2 or not isinstance(values[0], int): + raise ReportFailure("Unable to process radar results.") + + bugID,message = values + bugID = int(bugID) + + if not bugID: + raise ReportFailure(message) + + return "Filed: %d"%(bugID,bugID) ### diff --git a/tools/scan-view/Resources/FileRadar.scpt b/tools/scan-view/Resources/FileRadar.scpt index 145386c30c..a22489f38f 100644 Binary files a/tools/scan-view/Resources/FileRadar.scpt and b/tools/scan-view/Resources/FileRadar.scpt differ diff --git a/tools/scan-view/ScanView.py b/tools/scan-view/ScanView.py index e340a9fa6c..5e7bbf4fe8 100644 --- a/tools/scan-view/ScanView.py +++ b/tools/scan-view/ScanView.py @@ -11,7 +11,7 @@ import threading import time import socket -from Reporter import BugReport +import Reporter # Keys replaced by server. @@ -43,6 +43,13 @@ class ReporterThread(threading.Thread): time.sleep(3) if self.server.options.debug: print >>sys.stderr, "%s: SERVER: submission complete."%(sys.argv[0],) + except Reporter.ReportFailure,e: + s = StringIO.StringIO() + print >>s,'Submission Failed
'
+            print >>s,e.value
+            print >>s,'
' + self.status = s.getvalue() + return except Exception,e: s = StringIO.StringIO() import traceback @@ -54,8 +61,8 @@ class ReporterThread(threading.Thread): s = StringIO.StringIO() print >>s, 'Submission Complete!' - print >>s, '
' if result is not None: + print >>s, '
' print >>s, result self.status = s.getvalue() @@ -184,7 +191,7 @@ class ScanViewRequestHandler(SimpleHTTPServer.SimpleHTTPRequestHandler): # Create the report. path = os.path.join(self.server.root, 'report-%s.html'%report) files = [path] - br = BugReport(title, description, files) + br = Reporter.BugReport(title, description, files) # Send back an initial response and wait for the report to # finish.