| OLD | NEW |
| 1 # coding=utf8 | 1 # coding=utf8 |
| 2 # Copyright (c) 2012 The Chromium Authors. All rights reserved. | 2 # Copyright (c) 2012 The Chromium Authors. All rights reserved. |
| 3 # Use of this source code is governed by a BSD-style license that can be | 3 # Use of this source code is governed by a BSD-style license that can be |
| 4 # found in the LICENSE file. | 4 # found in the LICENSE file. |
| 5 """Postpone commits until the tree is open.""" | 5 """Postpone commits until the tree is open.""" |
| 6 | 6 |
| 7 import calendar | 7 import calendar |
| 8 import json | 8 import json |
| 9 import logging | 9 import logging |
| 10 import re |
| 10 import ssl | 11 import ssl |
| 11 import time | 12 import time |
| 12 import urllib2 | 13 import urllib2 |
| 13 | 14 |
| 14 from verification import base | 15 from verification import base |
| 15 | 16 |
| 16 | 17 |
| 17 class TreeStatus(base.IVerifierStatus): | 18 class TreeStatus(base.IVerifierStatus): |
| 18 tree_status_url = unicode | 19 tree_status_url = unicode |
| 19 issue = int | 20 issue = int |
| (...skipping 29 matching lines...) Expand all Loading... |
| 49 return False | 50 return False |
| 50 except (ssl.SSLError, urllib2.URLError, ValueError): | 51 except (ssl.SSLError, urllib2.URLError, ValueError): |
| 51 logging.error('Failed to request tree status! %s' % url) | 52 logging.error('Failed to request tree status! %s' % url) |
| 52 return True | 53 return True |
| 53 | 54 |
| 54 def why_not(self): | 55 def why_not(self): |
| 55 if self.last_tree_status: | 56 if self.last_tree_status: |
| 56 return u'Tree is currently not open: %s' % self.last_tree_status | 57 return u'Tree is currently not open: %s' % self.last_tree_status |
| 57 | 58 |
| 58 | 59 |
| 60 class AlwaysOpenTreeStatus(TreeStatus): |
| 61 """Used when tree status does not need to be checked.""" |
| 62 def postpone(self): |
| 63 return False |
| 64 |
| 65 |
| 59 class TreeStatusVerifier(base.Verifier): | 66 class TreeStatusVerifier(base.Verifier): |
| 60 """Checks the tree status before allowing a commit.""" | 67 """Checks the tree status before allowing a commit.""" |
| 61 name = 'tree status' | 68 name = 'tree status' |
| 62 | 69 |
| 63 def __init__(self, tree_status_url): | 70 def __init__(self, tree_status_url): |
| 64 super(TreeStatusVerifier, self).__init__() | 71 super(TreeStatusVerifier, self).__init__() |
| 65 self.tree_status_url = tree_status_url | 72 self.tree_status_url = tree_status_url |
| 66 | 73 |
| 67 def verify(self, pending): | 74 def verify(self, pending): |
| 68 pending.verifications[self.name] = TreeStatus( | 75 if re.search(r'(?im)^NOTREECHECKS=TRUE$', pending.description): |
| 69 tree_status_url=self.tree_status_url, issue=pending.issue) | 76 # Use a TreeStatus instance that always returns False for postpone(). |
| 77 tree_status = AlwaysOpenTreeStatus() |
| 78 else: |
| 79 tree_status = TreeStatus( |
| 80 tree_status_url=self.tree_status_url, issue=pending.issue) |
| 81 |
| 82 pending.verifications[self.name] = tree_status |
| 70 | 83 |
| 71 def update_status(self, queue): | 84 def update_status(self, queue): |
| 72 pass | 85 pass |
| 86 |
| OLD | NEW |