Merge ~twom/launchpad:git-branch-picker-short-form-urls into launchpad:master

Proposed by Tom Wardill
Status: Merged
Approved by: Tom Wardill
Approved revision: aa0f05df1fc186a803d360d2c619ea24c18818ff
Merge reported by: Otto Co-Pilot
Merged at revision: not available
Proposed branch: ~twom/launchpad:git-branch-picker-short-form-urls
Merge into: launchpad:master
Diff against target: 63 lines (+21/-1)
2 files modified
lib/lp/code/browser/widgets/tests/test_gitrefwidget.py (+19/-0)
lib/lp/code/model/gitcollection.py (+2/-1)
Reviewer Review Type Date Requested Status
Colin Watson (community) Approve
Review via email: mp+396734@code.launchpad.net

Commit message

Allow short form owner default repository urls

To post a comment you must log in.
Revision history for this message
Colin Watson (cjwatson) :
review: Approve

Preview Diff

[H/L] Next/Prev Comment, [J/K] Next/Prev File, [N/P] Next/Prev Hunk
diff --git a/lib/lp/code/browser/widgets/tests/test_gitrefwidget.py b/lib/lp/code/browser/widgets/tests/test_gitrefwidget.py
index 92c0569..98e223a 100644
--- a/lib/lp/code/browser/widgets/tests/test_gitrefwidget.py
+++ b/lib/lp/code/browser/widgets/tests/test_gitrefwidget.py
@@ -8,6 +8,7 @@ from testscenarios import (
8 load_tests_apply_scenarios,8 load_tests_apply_scenarios,
9 WithScenarios,9 WithScenarios,
10 )10 )
11from zope.component import getUtility
11from zope.formlib.interfaces import (12from zope.formlib.interfaces import (
12 IBrowserWidget,13 IBrowserWidget,
13 IInputWidget,14 IInputWidget,
@@ -21,11 +22,13 @@ from zope.schema import ValidationError
2122
22from lp.app.validators import LaunchpadValidationError23from lp.app.validators import LaunchpadValidationError
23from lp.code.browser.widgets.gitref import GitRefWidget24from lp.code.browser.widgets.gitref import GitRefWidget
25from lp.code.interfaces.gitrepository import IGitRepositorySet
24from lp.code.vocabularies.gitrepository import GitRepositoryVocabulary26from lp.code.vocabularies.gitrepository import GitRepositoryVocabulary
25from lp.services.beautifulsoup import BeautifulSoup27from lp.services.beautifulsoup import BeautifulSoup
26from lp.services.webapp.escaping import html_escape28from lp.services.webapp.escaping import html_escape
27from lp.services.webapp.servers import LaunchpadTestRequest29from lp.services.webapp.servers import LaunchpadTestRequest
28from lp.testing import (30from lp.testing import (
31 person_logged_in,
29 TestCaseWithFactory,32 TestCaseWithFactory,
30 verifyObject,33 verifyObject,
31 )34 )
@@ -255,6 +258,22 @@ class TestGitRefWidget(WithScenarios, TestCaseWithFactory):
255 "There is no Git repository named '%s' registered in "258 "There is no Git repository named '%s' registered in "
256 "Launchpad." % ref.repository_url)259 "Launchpad." % ref.repository_url)
257260
261 def test_getInputValue_owner_default_short_form(self):
262 owner = self.factory.makePerson()
263 target = self.factory.makeProduct()
264 repo = self.factory.makeGitRepository(owner=owner, target=target)
265 [ref] = self.factory.makeGitRefs(repository=repo)
266 with person_logged_in(repo.owner):
267 getUtility(IGitRepositorySet).setDefaultRepositoryForOwner(
268 owner, target, repo, owner)
269 short_url = "~{}/{}".format(owner.name, target.name)
270 form = {
271 "field.git_ref.repository": short_url,
272 "field.git_ref.path": ref.path,
273 }
274 self.widget.request = LaunchpadTestRequest(form=form)
275 self.assertEqual(ref, self.widget.getInputValue())
276
258 def test_call(self):277 def test_call(self):
259 # The __call__ method sets up the widgets.278 # The __call__ method sets up the widgets.
260 markup = self.widget()279 markup = self.widget()
diff --git a/lib/lp/code/model/gitcollection.py b/lib/lp/code/model/gitcollection.py
index eef06f6..f9466a9 100644
--- a/lib/lp/code/model/gitcollection.py
+++ b/lib/lp/code/model/gitcollection.py
@@ -544,7 +544,8 @@ class GenericGitCollection:
544 path = URI(term).path.strip("/")544 path = URI(term).path.strip("/")
545 except InvalidURIError:545 except InvalidURIError:
546 path = term546 path = term
547 return getUtility(IGitLookup).getByUniqueName(path)547 result = getUtility(IGitLookup).getByPath(path)
548 return result[0]
548549
549 def search(self, term):550 def search(self, term):
550 """See `IGitCollection`."""551 """See `IGitCollection`."""

Subscribers

People subscribed via source and target branches

to status/vote changes: