Merge lp:~jelmer/brz/merge-proposal-text into lp:brz

Proposed by Jelmer Vernooij
Status: Merged
Approved by: Jelmer Vernooij
Approved revision: no longer in the source branch.
Merge reported by: The Breezy Bot
Merged at revision: not available
Proposed branch: lp:~jelmer/brz/merge-proposal-text
Merge into: lp:brz
Diff against target: 149 lines (+31/-9)
5 files modified
breezy/plugins/propose/github.py (+2/-4)
breezy/plugins/propose/gitlabs.py (+7/-5)
breezy/plugins/propose/launchpad.py (+2/-0)
breezy/propose.py (+9/-0)
breezy/tests/test_propose.py (+11/-0)
To merge this branch: bzr merge lp:~jelmer/brz/merge-proposal-text
Reviewer Review Type Date Requested Status
Jelmer Vernooij Approve
Review via email: mp+377672@code.launchpad.net

Commit message

Add Hoster.merge_proposal_description_format and common function for determining title.

Description of the change

Add Hoster.merge_proposal_description_format and common function for determining title.

To post a comment you must log in.
Revision history for this message
Jelmer Vernooij (jelmer) :
review: Approve

Preview Diff

[H/L] Next/Prev Comment, [J/K] Next/Prev File, [N/P] Next/Prev Hunk
=== modified file 'breezy/plugins/propose/github.py'
--- breezy/plugins/propose/github.py 2020-01-12 18:51:25 +0000
+++ breezy/plugins/propose/github.py 2020-01-15 23:43:43 +0000
@@ -22,6 +22,7 @@
22import os22import os
2323
24from ...propose import (24from ...propose import (
25 determine_title,
25 Hoster,26 Hoster,
26 HosterLoginRequired,27 HosterLoginRequired,
27 MergeProposal,28 MergeProposal,
@@ -71,10 +72,6 @@
71 return f.read().strip()72 return f.read().strip()
7273
7374
74def determine_title(description):
75 return description.splitlines()[0]
76
77
78class ValidationFailed(errors.BzrError):75class ValidationFailed(errors.BzrError):
7976
80 _fmt = "GitHub validation failed: %(error)s"77 _fmt = "GitHub validation failed: %(error)s"
@@ -240,6 +237,7 @@
240237
241 supports_merge_proposal_labels = True238 supports_merge_proposal_labels = True
242 supports_merge_proposal_commit_message = False239 supports_merge_proposal_commit_message = False
240 merge_proposal_description_format = 'markdown'
243241
244 def __repr__(self):242 def __repr__(self):
245 return "GitHub()"243 return "GitHub()"
246244
=== modified file 'breezy/plugins/propose/gitlabs.py'
--- breezy/plugins/propose/gitlabs.py 2020-01-12 13:56:10 +0000
+++ breezy/plugins/propose/gitlabs.py 2020-01-15 23:43:43 +0000
@@ -35,6 +35,7 @@
35from ...transport import get_transport35from ...transport import get_transport
3636
37from ...propose import (37from ...propose import (
38 determine_title,
38 Hoster,39 Hoster,
39 MergeProposal,40 MergeProposal,
40 MergeProposalBuilder,41 MergeProposalBuilder,
@@ -189,7 +190,7 @@
189 return self._mr['description']190 return self._mr['description']
190191
191 def set_description(self, description):192 def set_description(self, description):
192 self._update(description=description, title=description.splitlines()[0])193 self._update(description=description, title=determine_title(description))
193194
194 def get_commit_message(self):195 def get_commit_message(self):
195 return self._mr.get('merge_commit_message')196 return self._mr.get('merge_commit_message')
@@ -270,6 +271,7 @@
270271
271 supports_merge_proposal_labels = True272 supports_merge_proposal_labels = True
272 supports_merge_proposal_commit_message = False273 supports_merge_proposal_commit_message = False
274 merge_proposal_description_format = 'markdown'
273275
274 def __repr__(self):276 def __repr__(self):
275 return "<GitLab(%r)>" % self.base_url277 return "<GitLab(%r)>" % self.base_url
@@ -548,11 +550,11 @@
548 return GitLabMergeProposal(mr)550 return GitLabMergeProposal(mr)
549551
550 def delete_project(self, project):552 def delete_project(self, project):
551 path = 'projects/%s' % urlutils.quote(str(project_name), '')553 path = 'projects/%s' % urlutils.quote(str(project), '')
552 response = self._api_request('DELETE', path)554 response = self._api_request('DELETE', path)
553 if response.status == 404:555 if response.status == 404:
554 raise NoSuchProject(project_name)556 raise NoSuchProject(project)
555 if response.status != 200:557 if response.status != 202:
556 raise errors.InvalidHttpResponse(path, response.text)558 raise errors.InvalidHttpResponse(path, response.text)
557559
558560
@@ -594,7 +596,7 @@
594 source_project = self.gl._get_project(self.source_project_name)596 source_project = self.gl._get_project(self.source_project_name)
595 target_project = self.gl._get_project(self.target_project_name)597 target_project = self.gl._get_project(self.target_project_name)
596 # TODO(jelmer): Allow setting title explicitly598 # TODO(jelmer): Allow setting title explicitly
597 title = description.splitlines()[0]599 title = determine_title(description)
598 # TODO(jelmer): Allow setting allow_collaboration field600 # TODO(jelmer): Allow setting allow_collaboration field
599 # TODO(jelmer): Allow setting milestone field601 # TODO(jelmer): Allow setting milestone field
600 # TODO(jelmer): Allow setting squash field602 # TODO(jelmer): Allow setting squash field
601603
=== modified file 'breezy/plugins/propose/launchpad.py'
--- breezy/plugins/propose/launchpad.py 2020-01-11 16:22:12 +0000
+++ breezy/plugins/propose/launchpad.py 2020-01-15 23:43:43 +0000
@@ -199,6 +199,8 @@
199199
200 supports_merge_proposal_commit_message = True200 supports_merge_proposal_commit_message = True
201201
202 merge_proposal_description_format = 'plain'
203
202 def __init__(self, staging=False):204 def __init__(self, staging=False):
203 self._staging = staging205 self._staging = staging
204 if staging:206 if staging:
205207
=== modified file 'breezy/propose.py'
--- breezy/propose.py 2020-01-12 13:56:10 +0000
+++ breezy/propose.py 2020-01-15 23:43:43 +0000
@@ -230,6 +230,10 @@
230 # rather than https://api.github.com/230 # rather than https://api.github.com/
231 base_url = None231 base_url = None
232232
233 # The syntax to use for formatting merge proposal descriptions.
234 # Common values: 'plain', 'markdown'
235 merge_proposal_description_format = None
236
233 def publish_derived(self, new_branch, base_branch, name, project=None,237 def publish_derived(self, new_branch, base_branch, name, project=None,
234 owner=None, revision_id=None, overwrite=False,238 owner=None, revision_id=None, overwrite=False,
235 allow_lossy=True):239 allow_lossy=True):
@@ -330,6 +334,11 @@
330 raise NotImplementedError(cls.iter_instances)334 raise NotImplementedError(cls.iter_instances)
331335
332336
337def determine_title(description):
338 """Determine the title for a merge proposal based on full description."""
339 return description.splitlines()[0].split('.')[0]
340
341
333def get_hoster(branch, possible_hosters=None):342def get_hoster(branch, possible_hosters=None):
334 """Find the hoster for a branch.343 """Find the hoster for a branch.
335344
336345
=== modified file 'breezy/tests/test_propose.py'
--- breezy/tests/test_propose.py 2019-10-27 14:11:56 +0000
+++ breezy/tests/test_propose.py 2020-01-15 23:43:43 +0000
@@ -17,6 +17,7 @@
17import os17import os
1818
19from ..propose import (19from ..propose import (
20 determine_title,
20 get_proposal_by_url,21 get_proposal_by_url,
21 get_hoster,22 get_hoster,
22 Hoster,23 Hoster,
@@ -106,3 +107,13 @@
106107
107 url = urlutils.local_path_to_url(os.path.join(self.test_dir, 'hosted', 'proposal'))108 url = urlutils.local_path_to_url(os.path.join(self.test_dir, 'hosted', 'proposal'))
108 self.assertIsInstance(get_proposal_by_url(url), MergeProposal)109 self.assertIsInstance(get_proposal_by_url(url), MergeProposal)
110
111
112class DetermineTitleTests(tests.TestCase):
113
114 def test_determine_title(self):
115 self.assertEqual('Make some change', determine_title("""\
116Make some change.
117
118And here are some more details.
119"""))

Subscribers

People subscribed via source and target branches