Make the try job presubmit check (CheckTryJobExecution) less verbose.

Also clean up the Tree is closed presubmit check (CheckTreeIsOpen).

TEST=none
BUG=none
Review URL: http://codereview.chromium.org/165251

git-svn-id: svn://svn.chromium.org/chrome/trunk/src@23195 0039d316-1c4b-4281-b951-d872f2087c98
diff --git a/PRESUBMIT.py b/PRESUBMIT.py
index 47fd2e3..d1a8a3926 100755
--- a/PRESUBMIT.py
+++ b/PRESUBMIT.py
@@ -62,10 +62,12 @@
       input_api, output_api))
   # Make sure the tree is 'open'.
   # TODO(maruel): Run it in a separate thread to parallelize checks?
-  results.extend(CheckTreeIsOpen(input_api, output_api,
-                                 'http://chromium-status.appspot.com/status',
-                                 '0',
-                                 'http://chromium-status.appspot.com/current'))
+  results.extend(CheckTreeIsOpen(
+      input_api,
+      output_api,
+      'http://chromium-status.appspot.com/status',
+      '0',
+      'http://chromium-status.appspot.com/current?format=raw'))
   results.extend(CheckTryJobExecution(input_api, output_api))
   return results
 
@@ -76,28 +78,28 @@
     return outputs
   url = "http://codereview.chromium.org/%d/get_build_results/%d" % (
             input_api.change.issue, input_api.change.patchset)
+  PLATFORMS = ('win', 'linux', 'mac')
   try:
     connection = input_api.urllib2.urlopen(url)
     # platform|status|url
     values = [item.split('|', 2) for item in connection.read().splitlines()]
     connection.close()
-    statuses = map(lambda x: x[1], values)
+    # Reformat as an dict of platform: [status, url]
+    values = dict([[v[0], [v[1], v[2]]] for v in values])
+    for platform in PLATFORMS:
+      values.setdefault(platform, ['not started', ''])
     message = None
-    if 'failure' in statuses:
-      failures = filter(lambda x: x[1] != 'success', values)
-      long_text = '\n'.join("% 5s: % 7s %s" % (item[0], item[1], item[2])
-                            for item in failures)
-      message = 'You had try job failures. Are you sure you want to check-in?\n'
-    elif 'pending' in statuses or len(values) != 3:
-      long_text = '\n'.join("% 5s: % 7s %s" % (item[0], item[1], item[2])
-                            for item in values)
-      message = 'You should try the patch first (and wait for it to finish).\n'
+    non_success = [k.upper() for k,v in values.iteritems() if v[0] != 'success']
+    if 'failure' in [v[0] for v in values.itervalues()]:
+      message = 'Try job failures on %s!\n' % ', '.join(non_success)
+    elif non_success:
+      message = ('Unfinished (or not even started) try jobs on '
+                 '%s.\n') % ', '.join(non_success)
     if message:
       message += (
           'Is try server wrong or broken? Please notify [email protected]. '
           'Thanks.\n')
-      outputs.append(output_api.PresubmitPromptWarning(message=message,
-                                                       long_text=long_text))
+      outputs.append(output_api.PresubmitPromptWarning(message=message))
   except input_api.urllib2.HTTPError, e:
     if e.code == 404:
       # Fallback to no try job.
@@ -127,12 +129,8 @@
       long_text = status + '\n' + url
       try:
         connection = input_api.urllib2.urlopen(url_text)
-        text = connection.read()
+        long_text = connection.read().strip()
         connection.close()
-        match = input_api.re.search(r"\<div class\=\"Notice\"\>(.*)\<\/div\>",
-                                    text)
-        if match:
-          long_text = match.group(1).strip()
       except IOError:
         pass
       return [output_api.PresubmitError("The tree is closed.",