1 # Copyright (c) 2010, Google Inc. All rights reserved. 2 # 3 # Redistribution and use in source and binary forms, with or without 4 # modification, are permitted provided that the following conditions are 5 # met: 6 # 7 # * Redistributions of source code must retain the above copyright 8 # notice, this list of conditions and the following disclaimer. 9 # * Redistributions in binary form must reproduce the above 10 # copyright notice, this list of conditions and the following disclaimer 11 # in the documentation and/or other materials provided with the 12 # distribution. 13 # * Neither the name of Google Inc. nor the names of its 14 # contributors may be used to endorse or promote products derived from 15 # this software without specific prior written permission. 16 # 17 # THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS 18 # "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT 19 # LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR 20 # A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT 21 # OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, 22 # SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT 23 # LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, 24 # DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY 25 # THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT 26 # (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE 27 # OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. 28 29 import re 30 31 32 def view_source_url(local_path): 33 return "http://trac.webkit.org/browser/trunk/%s" % local_path 34 35 36 def view_revision_url(revision_number): 37 return "http://trac.webkit.org/changeset/%s" % revision_number 38 39 40 def chromium_results_url_base(): 41 return 'https://storage.googleapis.com/chromium-layout-test-archives' 42 43 44 def chromium_results_url_base_for_builder(builder_name): 45 return '%s/%s' % (chromium_results_url_base(), re.sub('[ .()]', '_', builder_name)) 46 47 48 def chromium_results_zip_url(builder_name): 49 return chromium_results_url_base_for_builder(builder_name) + '/results/layout-test-results.zip' 50 51 52 def chromium_accumulated_results_url_base_for_builder(builder_name): 53 return chromium_results_url_base_for_builder(builder_name) + "/results/layout-test-results" 54 55 56 chromium_lkgr_url = "http://chromium-status.appspot.com/lkgr" 57 contribution_guidelines = "http://webkit.org/coding/contributing.html" 58 59 bug_server_domain = "webkit.org" 60 bug_server_host = "bugs." + bug_server_domain 61 _bug_server_regex = "https?://%s/" % re.sub('\.', '\\.', bug_server_host) 62 bug_server_url = "https://%s/" % bug_server_host 63 bug_url_long = _bug_server_regex + r"show_bug\.cgi\?id=(?P<bug_id>\d+)(&ctype=xml|&excludefield=attachmentdata)*" 64 bug_url_short = r"https?\://%s/b/(?P<bug_id>\d+)" % bug_server_domain 65 66 attachment_url = _bug_server_regex + r"attachment\.cgi\?id=(?P<attachment_id>\d+)(&action=(?P<action>\w+))?" 67 direct_attachment_url = r"https?://bug-(?P<bug_id>\d+)-attachments.%s/attachment\.cgi\?id=(?P<attachment_id>\d+)" % bug_server_domain 68 69 buildbot_url = "http://build.webkit.org" 70 chromium_buildbot_url = "http://build.chromium.org/p/chromium.webkit" 71 72 chromium_webkit_sheriff_url = "http://build.chromium.org/p/chromium.webkit/sheriff_webkit.js" 73 74 omahaproxy_url = "http://omahaproxy.appspot.com/" 75 76 def parse_bug_id(string): 77 if not string: 78 return None 79 match = re.search(bug_url_short, string) 80 if match: 81 return int(match.group('bug_id')) 82 match = re.search(bug_url_long, string) 83 if match: 84 return int(match.group('bug_id')) 85 return None 86 87 88 def parse_attachment_id(string): 89 if not string: 90 return None 91 match = re.search(attachment_url, string) 92 if match: 93 return int(match.group('attachment_id')) 94 match = re.search(direct_attachment_url, string) 95 if match: 96 return int(match.group('attachment_id')) 97 return None 98