| OLD | NEW | 
|---|
| 1 # This file is part of the Adblock Plus web scripts, | 1 # This file is part of the Adblock Plus web scripts, | 
| 2 # Copyright (C) 2006-present eyeo GmbH | 2 # Copyright (C) 2006-present eyeo GmbH | 
| 3 # | 3 # | 
| 4 # Adblock Plus is free software: you can redistribute it and/or modify | 4 # Adblock Plus is free software: you can redistribute it and/or modify | 
| 5 # it under the terms of the GNU General Public License version 3 as | 5 # it under the terms of the GNU General Public License version 3 as | 
| 6 # published by the Free Software Foundation. | 6 # published by the Free Software Foundation. | 
| 7 # | 7 # | 
| 8 # Adblock Plus is distributed in the hope that it will be useful, | 8 # Adblock Plus is distributed in the hope that it will be useful, | 
| 9 # but WITHOUT ANY WARRANTY; without even the implied warranty of | 9 # but WITHOUT ANY WARRANTY; without even the implied warranty of | 
| 10 # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the | 10 # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the | 
| 11 # GNU General Public License for more details. | 11 # GNU General Public License for more details. | 
| 12 # | 12 # | 
| 13 # You should have received a copy of the GNU General Public License | 13 # You should have received a copy of the GNU General Public License | 
| 14 # along with Adblock Plus.  If not, see <http://www.gnu.org/licenses/>. | 14 # along with Adblock Plus.  If not, see <http://www.gnu.org/licenses/>. | 
| 15 | 15 | 
| 16 import ConfigParser | 16 import ConfigParser | 
| 17 import mock | 17 import mock | 
| 18 import unittest | 18 import unittest | 
| 19 | 19 | 
| 20 import sitescripts.hg.bin.update_issues as update_issues | 20 import sitescripts.hg.bin.update_issues as update_issues | 
| 21 | 21 | 
| 22 | 22 | 
| 23 def _issue(component, milestone='', can_resolve=False): | 23 def _issue(component, milestone='', can_resolve=False): | 
| 24     issue = { | 24     issue = { | 
| 25         'attrs': {'_ts': 1, 'milestone': milestone, 'component': component}, | 25         'attrs': {'_ts': 1, 'milestone': milestone, 'component': component}, | 
| 26         'actions': [['leave', '', '', []]] | 26         'actions': [['leave', '', '', []]], | 
| 27     } | 27     } | 
| 28     if can_resolve: | 28     if can_resolve: | 
| 29         issue['actions'].append(['resolve', '', '', []]) | 29         issue['actions'].append(['resolve', '', '', []]) | 
| 30     return issue | 30     return issue | 
| 31 | 31 | 
| 32 | 32 | 
| 33 ISSUES = { | 33 ISSUES = { | 
| 34     1337: _issue(component='one', can_resolve=True), | 34     1337: _issue(component='one', can_resolve=True), | 
| 35     2448: _issue(component='two'), | 35     2448: _issue(component='two'), | 
| 36     3559: _issue(component='one', milestone='other'), | 36     3559: _issue(component='one', milestone='other'), | 
| 37     4670: _issue(component='three', can_resolve=True), | 37     4670: _issue(component='three', can_resolve=True), | 
| 38     5781: _issue(component='four', can_resolve=True) | 38     5781: _issue(component='four', can_resolve=True), | 
| 39 } | 39 } | 
| 40 | 40 | 
| 41 MILESTONES = { | 41 MILESTONES = { | 
| 42     'completed': {'completed': True, 'name': 'completed'}, | 42     'completed': {'completed': True, 'name': 'completed'}, | 
| 43     'current': {'completed': None, 'name': 'current'}, | 43     'current': {'completed': None, 'name': 'current'}, | 
| 44     'other': {'completed': None, 'name': 'other'} | 44     'other': {'completed': None, 'name': 'other'}, | 
| 45 } | 45 } | 
| 46 | 46 | 
| 47 | 47 | 
| 48 class _TestBase(unittest.TestCase): | 48 class _TestBase(unittest.TestCase): | 
| 49     """Base class for hook tests that prepares the environment.""" | 49     """Base class for hook tests that prepares the environment.""" | 
| 50 | 50 | 
| 51     def _patchWith(self, target, return_value): | 51     def _patchWith(self, target, return_value): | 
| 52         patcher = mock.patch(target, return_value=return_value) | 52         patcher = mock.patch(target, return_value=return_value) | 
| 53         patcher.start() | 53         patcher.start() | 
| 54         self.addCleanup(patcher.stop) | 54         self.addCleanup(patcher.stop) | 
| (...skipping 67 matching lines...) Expand 10 before | Expand all | Expand 10 after  Loading... | 
| 122         return updates | 122         return updates | 
| 123 | 123 | 
| 124     def test_commits_with_invalid_message_format_ignored(self): | 124     def test_commits_with_invalid_message_format_ignored(self): | 
| 125         self._run_hook([ | 125         self._run_hook([ | 
| 126             '', | 126             '', | 
| 127             'Issue #1337 - Extraneous characters in issue number', | 127             'Issue #1337 - Extraneous characters in issue number', | 
| 128             'Issue 1337',  # No dash, no message. | 128             'Issue 1337',  # No dash, no message. | 
| 129             'Issue 1337: Colon instead of dash', | 129             'Issue 1337: Colon instead of dash', | 
| 130             'Noissue no dash', | 130             'Noissue no dash', | 
| 131             'Issue 1337-No space around dash', | 131             'Issue 1337-No space around dash', | 
| 132             'Fixes 1337 no dash' | 132             'Fixes 1337 no dash', | 
| 133         ], warning_count=7) | 133         ], warning_count=7) | 
| 134 | 134 | 
| 135     def test_noissue_commits_ignored(self): | 135     def test_noissue_commits_ignored(self): | 
| 136         self._run_hook(['Noissue - Foo', 'noissue - Bar'])  # No updates. | 136         self._run_hook(['Noissue - Foo', 'noissue - Bar'])  # No updates. | 
| 137 | 137 | 
| 138     def test_single_issue_referenced(self): | 138     def test_single_issue_referenced(self): | 
| 139         updates = self._run_hook(['Issue 1337 - Foo'], update_count=1) | 139         updates = self._run_hook(['Issue 1337 - Foo'], update_count=1) | 
| 140         self.assertEqual(updates[0][0][0], 1337) | 140         self.assertEqual(updates[0][0][0], 1337) | 
| 141 | 141 | 
| 142     def test_multiline_commit_message(self): | 142     def test_multiline_commit_message(self): | 
| (...skipping 90 matching lines...) Expand 10 before | Expand all | Expand 10 after  Loading... | 
| 233 | 233 | 
| 234     def test_fix_nonexistent(self): | 234     def test_fix_nonexistent(self): | 
| 235         self._run_hook(['Fixes 7331 - Foo'], warning_count=1) | 235         self._run_hook(['Fixes 7331 - Foo'], warning_count=1) | 
| 236 | 236 | 
| 237     def test_fix_closed_with_assigned_milestone(self): | 237     def test_fix_closed_with_assigned_milestone(self): | 
| 238         self._run_hook(['fixes 3559 - Foo'])  # No updates. | 238         self._run_hook(['fixes 3559 - Foo'])  # No updates. | 
| 239 | 239 | 
| 240 | 240 | 
| 241 if __name__ == '__main__': | 241 if __name__ == '__main__': | 
| 242     unittest.main() | 242     unittest.main() | 
| OLD | NEW | 
|---|