| OLD | NEW |
| 1 # Copyright (c) 2012 The Chromium Authors. All rights reserved. | 1 # Copyright (c) 2012 The Chromium Authors. All rights reserved. |
| 2 # Use of this source code is governed by a BSD-style license that can be | 2 # Use of this source code is governed by a BSD-style license that can be |
| 3 # found in the LICENSE file. | 3 # found in the LICENSE file. |
| 4 | 4 |
| 5 """Bug module that is necessary for the layout analyzer.""" | 5 """Bug module that is necessary for the layout analyzer.""" |
| 6 | 6 |
| 7 import re | 7 import re |
| 8 | 8 |
| 9 from webkitpy.layout_tests.models.test_expectations import * | 9 from webkitpy.layout_tests.models.test_expectations import * |
| 10 | 10 |
| 11 | 11 |
| 12 class Bug(object): | 12 class Bug(object): |
| 13 """A class representing a bug. | 13 """A class representing a bug. |
| 14 | 14 |
| 15 TODO(imasaki): add more functionalities here if bug-tracker API is available. | 15 TODO(imasaki): add more functionalities here if bug-tracker API is available. |
| 16 For example, you can get the name of a bug owner. | 16 For example, you can get the name of a bug owner. |
| 17 """ | 17 """ |
| 18 # Type enum for the bug. | 18 # Type enum for the bug. |
| 19 WEBKIT = 0 | 19 WEBKIT = 0 |
| 20 CHROMIUM = 1 | 20 CHROMIUM = 1 |
| 21 OTHERS = 2 | 21 OTHERS = 2 |
| 22 | 22 |
| 23 def __init__(self, bug_modifier): | 23 def __init__(self, bug_modifier): |
| 24 """Initialize the object using raw bug text (such as BUGWK2322). | 24 """Initialize the object using raw bug text (such as BUGWK2322). |
| 25 | 25 |
| 26 The bug modifier used in the test expectation file. | 26 The bug modifier used in the test expectation file. |
| 27 | 27 |
| 28 Args: | 28 Args: |
| 29 bug_modifier: a string representing a bug modifier. According to | 29 bug_modifier: a string representing a bug modifier. According to |
| 30 http://www.chromium.org/developers/testing/webkit-layout-tests/\ | 30 //docs/testing/layout_test_expectations.md |
| 31 testexpectations | 31 bug identifiers are of the form "webkit.org/b/12345", "crbug.com/12345", |
| 32 Bug identifiers are of the form "webkit.org/b/12345", "crbug.com/12345", | |
| 33 "code.google.com/p/v8/issues/detail?id=12345" or "Bug(username)" | 32 "code.google.com/p/v8/issues/detail?id=12345" or "Bug(username)" |
| 34 """ | 33 """ |
| 35 match = re.match('Bug\((\w+)\)$', bug_modifier) | 34 match = re.match('Bug\((\w+)\)$', bug_modifier) |
| 36 if match: | 35 if match: |
| 37 self.type = self.OTHERS | 36 self.type = self.OTHERS |
| 38 self.url = 'mailto:%s@chromium.org' % match.group(1).lower() | 37 self.url = 'mailto:%s@chromium.org' % match.group(1).lower() |
| 39 self.bug_txt = bug_modifier | 38 self.bug_txt = bug_modifier |
| 40 return | 39 return |
| 41 | 40 |
| 42 self.type = self.GetBugType(bug_modifier) | 41 self.type = self.GetBugType(bug_modifier) |
| 43 self.url = bug_modifier | 42 self.url = bug_modifier |
| 44 self.bug_txt = bug_modifier | 43 self.bug_txt = bug_modifier |
| 45 | 44 |
| 46 | 45 |
| 47 def GetBugType(self, bug_modifier): | 46 def GetBugType(self, bug_modifier): |
| 48 """Returns type of the bug based on URL.""" | 47 """Returns type of the bug based on URL.""" |
| 49 if bug_modifier.startswith(WEBKIT_BUG_PREFIX): | 48 if bug_modifier.startswith(WEBKIT_BUG_PREFIX): |
| 50 return self.WEBKIT; | 49 return self.WEBKIT; |
| 51 if bug_modifier.startswith(CHROMIUM_BUG_PREFIX): | 50 if bug_modifier.startswith(CHROMIUM_BUG_PREFIX): |
| 52 return self.CHROMIUM; | 51 return self.CHROMIUM; |
| 53 return self.OTHERS | 52 return self.OTHERS |
| 54 | 53 |
| 55 def __str__(self): | 54 def __str__(self): |
| 56 """Get a string representation of a bug object. | 55 """Get a string representation of a bug object. |
| 57 | 56 |
| 58 Returns: | 57 Returns: |
| 59 a string for HTML link representation of a bug. | 58 a string for HTML link representation of a bug. |
| 60 """ | 59 """ |
| 61 return '<a href="%s">%s</a>' % (self.url, self.bug_txt) | 60 return '<a href="%s">%s</a>' % (self.url, self.bug_txt) |
| OLD | NEW |