Rietveld Code Review Tool
Help | Bug tracker | Discussion group | Source code

Delta Between Two Patch Sets: sitescripts/hg/test/update_issues.py

Issue 29339623: Issue 3681 - Add suport for "Fixes XXXX - ..." commit messages (Closed)
Left Patch Set: Address review comments Created May 2, 2016, 4:46 p.m.
Right Patch Set: Fix Strunk+White violations Created May 18, 2016, 8:29 a.m.
Left:
Right:
Use n/p to move between diff chunks; N/P to move between comments.
Jump to:
Left: Side by side diff | Download
Right: Side by side diff | Download
« no previous file with change/comment | « sitescripts/hg/template/issue_commit_comment.tmpl ('k') | no next file » | no next file with change/comment »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
LEFTRIGHT
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-2016 Eyeo GmbH 2 # Copyright (C) 2006-2016 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
(...skipping 38 matching lines...) Expand 10 before | Expand all | Expand 10 after
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)
55 55
56 def _create_mock_milestone_multicall(self): 56 def _create_mock_milestone_multicall(self):
57 ret = [] 57 ret = []
58 multicall = mock.Mock(return_value=ret) 58 multicall = mock.Mock(return_value=ret)
59 multicall.ticket.milestone.get = lambda id: ret.append(MILESTONES[id]) 59 multicall.ticket.milestone.get = lambda i: ret.append(MILESTONES[i])
60 return multicall 60 return multicall
61 61
62 def _mock_trac(self): 62 def _mock_trac(self):
63 trac = mock.Mock() 63 trac = mock.Mock()
64 trac.ticket.get = lambda id: [id, mock.ANY, mock.ANY, 64 trac.ticket.get = lambda i: [i, mock.ANY, mock.ANY, ISSUES[i]['attrs']]
65 ISSUES[id]['attrs']] 65 trac.ticket.getActions = lambda i: ISSUES[i]['actions']
66 trac.ticket.getActions = lambda id: ISSUES[id]['actions']
67 trac.ticket.milestone.getAll = lambda: MILESTONES.keys() 66 trac.ticket.milestone.getAll = lambda: MILESTONES.keys()
68 self.trac_proxy_mock = trac 67 self.trac_proxy_mock = trac
69 self._patchWith('xmlrpclib.ServerProxy', trac) 68 self._patchWith('xmlrpclib.ServerProxy', trac)
70 self._patchWith('xmlrpclib.MultiCall', 69 self._patchWith('xmlrpclib.MultiCall',
71 self._create_mock_milestone_multicall()) 70 self._create_mock_milestone_multicall())
72 71
73 def _mock_config(self): 72 def _mock_config(self):
74 config = ConfigParser.ConfigParser() 73 config = ConfigParser.ConfigParser()
75 config.add_section('hg') 74 config.add_section('hg')
76 config.set('hg', 'trac_xmlrpc_url', 'foo') 75 config.set('hg', 'trac_xmlrpc_url', 'foo')
(...skipping 18 matching lines...) Expand all
95 mock_commit.rev.return_value = i 94 mock_commit.rev.return_value = i
96 mock_commit.hex.return_value = '{:010x}'.format(i) + '0' * 30 95 mock_commit.hex.return_value = '{:010x}'.format(i) + '0' * 30
97 mock_commit.description.return_value = message 96 mock_commit.description.return_value = message
98 self.append(mock_commit) 97 self.append(mock_commit)
99 self.changelog = mock.Mock() 98 self.changelog = mock.Mock()
100 self.changelog.findmissingrevs = self._findmissingrevs 99 self.changelog.findmissingrevs = self._findmissingrevs
101 100
102 def _findmissingrevs(self, olds, news): 101 def _findmissingrevs(self, olds, news):
103 return range(olds[0] + 1, news[0] + 1) 102 return range(olds[0] + 1, news[0] + 1)
104 103
105 def __getitem__(self, id): 104 def __getitem__(self, commit_id):
106 if isinstance(id, str): 105 if isinstance(commit_id, str):
107 return [commit for commit in self if commit.hex() == id][0] 106 return [commit for commit in self if commit.hex() == commit_id][0]
108 return list.__getitem__(self, id) 107 return list.__getitem__(self, commit_id)
109 108
110 def url(self): 109 def url(self):
111 return 'mock/repo' 110 return 'mock/repo'
112 111
113 112
114 class TestChangegroupHook(_TestBase): 113 class TestChangegroupHook(_TestBase):
115 114
116 def _run_hook(self, commit_messages, warning_count=0, update_count=0): 115 def _run_hook(self, commit_messages, warning_count=0, update_count=0):
117 repo = _MockRepo(commit_messages) 116 repo = _MockRepo(commit_messages)
118 update_issues.changegroup_hook(self.ui, repo, 0) 117 update_issues.changegroup_hook(self.ui, repo, 0)
(...skipping 87 matching lines...) Expand 10 before | Expand all | Expand 10 after
206 self._check_update(updates[0], 1337) 205 self._check_update(updates[0], 1337)
207 self._check_update(updates[1], 2448, action='leave', milestone='other') 206 self._check_update(updates[1], 2448, action='leave', milestone='other')
208 207
209 def test_fix_nonexistent(self): 208 def test_fix_nonexistent(self):
210 self._run_hook(['Fixes 7331 - Foo'], warning_count=1) 209 self._run_hook(['Fixes 7331 - Foo'], warning_count=1)
211 210
212 def test_fix_closed_with_assigned_milestone(self): 211 def test_fix_closed_with_assigned_milestone(self):
213 self._run_hook(['fixes 3559 - Foo']) # No updates. 212 self._run_hook(['fixes 3559 - Foo']) # No updates.
214 213
215 214
216 if __name__ == "__main__": 215 if __name__ == '__main__':
217 unittest.main() 216 unittest.main()
LEFTRIGHT

Powered by Google App Engine
This is Rietveld