Merge ~cjwatson/launchpad:oci-allow-default-git-repository into launchpad:master

Proposed by Colin Watson
Status: Merged
Approved by: Colin Watson
Approved revision: 72554034cf25deee71589159d8a35ac56239852e
Merge reported by: Otto Co-Pilot
Merged at revision: not available
Proposed branch: ~cjwatson/launchpad:oci-allow-default-git-repository
Merge into: launchpad:master
Diff against target: 126 lines (+5/-44)
5 files modified
lib/lp/code/browser/tests/test_gitlisting.py (+0/-4)
lib/lp/code/interfaces/gitrepository.py (+1/-1)
lib/lp/code/model/gitrepository.py (+1/-5)
lib/lp/code/model/tests/test_gitlookup.py (+1/-1)
lib/lp/code/model/tests/test_gitrepository.py (+2/-33)
Reviewer Review Type Date Requested Status
Tom Wardill (community) Approve
Review via email: mp+401605@code.launchpad.net

Commit message

Remove restriction on default Git repository for OCI projects

Description of the change

We originally restricted this because we wanted to tie it to official recipe status, but later realized that didn't quite make sense as it's reasonable and useful to have multiple official recipes for a single OCI project. There doesn't seem any reason to retain this restriction now.

To post a comment you must log in.
Revision history for this message
Tom Wardill (twom) :
review: Approve

Preview Diff

[H/L] Next/Prev Comment, [J/K] Next/Prev File, [N/P] Next/Prev Hunk
1diff --git a/lib/lp/code/browser/tests/test_gitlisting.py b/lib/lp/code/browser/tests/test_gitlisting.py
2index 14239ad..fab5cd4 100644
3--- a/lib/lp/code/browser/tests/test_gitlisting.py
4+++ b/lib/lp/code/browser/tests/test_gitlisting.py
5@@ -428,10 +428,6 @@ class TestOCIProjectGitListingView(
6 pillar=distro, ociprojectname="bar")
7 self.target_path = "foo/+oci/bar"
8
9- def setDefaultRepository(self, target, repository):
10- getUtility(IGitRepositorySet).setDefaultRepository(
11- target=target, repository=repository, force_oci=True)
12-
13 def test_bzr_link(self):
14 # There's no OCIProject:+branches, nor any ability to create Bazaar
15 # branches for OCI projects.
16diff --git a/lib/lp/code/interfaces/gitrepository.py b/lib/lp/code/interfaces/gitrepository.py
17index 5374fb7..f486738 100644
18--- a/lib/lp/code/interfaces/gitrepository.py
19+++ b/lib/lp/code/interfaces/gitrepository.py
20@@ -1161,7 +1161,7 @@ class IGitRepositorySet(Interface):
21 title=_("Git repository"), required=False, schema=IGitRepository))
22 @export_write_operation()
23 @operation_for_version("devel")
24- def setDefaultRepository(target, repository, force_oci=False):
25+ def setDefaultRepository(target, repository):
26 """Set the default repository for a target.
27
28 :param target: An `IHasGitRepositories`.
29diff --git a/lib/lp/code/model/gitrepository.py b/lib/lp/code/model/gitrepository.py
30index 2c66571..78a2c5c 100644
31--- a/lib/lp/code/model/gitrepository.py
32+++ b/lib/lp/code/model/gitrepository.py
33@@ -1908,12 +1908,8 @@ class GitRepositorySet:
34 "Personal repositories cannot be defaults for any target.")
35 return IStore(GitRepository).find(GitRepository, *clauses).one()
36
37- def setDefaultRepository(self, target, repository, force_oci=False):
38+ def setDefaultRepository(self, target, repository):
39 """See `IGitRepositorySet`."""
40- if IOCIProject.providedBy(target) and not force_oci:
41- raise GitTargetError(
42- "Cannot manually set a default Git repository"
43- " for an OCI Project")
44 if IPerson.providedBy(target):
45 raise GitTargetError(
46 "Cannot set a default Git repository for a person, only "
47diff --git a/lib/lp/code/model/tests/test_gitlookup.py b/lib/lp/code/model/tests/test_gitlookup.py
48index 69f209b..2ec1e62 100644
49--- a/lib/lp/code/model/tests/test_gitlookup.py
50+++ b/lib/lp/code/model/tests/test_gitlookup.py
51@@ -173,7 +173,7 @@ class TestGetByPath(TestCaseWithFactory):
52 repository = self.factory.makeGitRepository(target=oci_project)
53 with person_logged_in(repository.target.distribution.owner):
54 getUtility(IGitRepositorySet).setDefaultRepository(
55- repository.target, repository, force_oci=True)
56+ repository.target, repository)
57 self.assertEqual(
58 (repository, ""), self.lookup.getByPath(repository.shortened_path))
59
60diff --git a/lib/lp/code/model/tests/test_gitrepository.py b/lib/lp/code/model/tests/test_gitrepository.py
61index 5790338..0d0078d 100644
62--- a/lib/lp/code/model/tests/test_gitrepository.py
63+++ b/lib/lp/code/model/tests/test_gitrepository.py
64@@ -634,8 +634,7 @@ class TestGitIdentityMixin(TestCaseWithFactory):
65 oci_project = self.factory.makeOCIProject()
66 repository = self.factory.makeGitRepository(target=oci_project)
67 with admin_logged_in():
68- self.repository_set.setDefaultRepository(
69- oci_project, repository, force_oci=True)
70+ self.repository_set.setDefaultRepository(oci_project, repository)
71 self.assertGitIdentity(
72 repository,
73 "%s/+oci/%s" % (oci_project.pillar.name, oci_project.name))
74@@ -751,8 +750,7 @@ class TestGitIdentityMixin(TestCaseWithFactory):
75 with admin_logged_in():
76 self.repository_set.setDefaultRepositoryForOwner(
77 repository.owner, oci_project, repository, repository.owner)
78- self.repository_set.setDefaultRepository(
79- oci_project, repository, force_oci=True)
80+ self.repository_set.setDefaultRepository(oci_project, repository)
81 eric_oci_project = getUtility(IPersonOCIProjectFactory).create(
82 eric, oci_project)
83 self.assertEqual(
84@@ -3595,29 +3593,6 @@ class TestGitRepositorySet(TestCaseWithFactory):
85 self.repository_set.setDefaultRepositoryForOwner,
86 person, person, repository, user)
87
88- def test_setDefaultRepository_refuses_oci_project(self):
89- # setDefaultRepository refuses if the target is an OCI project.
90- oci_project = self.factory.makeOCIProject()
91- repository = self.factory.makeGitRepository(target=oci_project)
92- with admin_logged_in():
93- self.assertRaises(
94- GitTargetError, self.repository_set.setDefaultRepository,
95- oci_project, repository)
96-
97- def test_setDefaultRepository_accepts_oci_project_override(self):
98- # setDefaultRepository refuses if the target is an OCI project.
99- oci_project = self.factory.makeOCIProject()
100- repository = self.factory.makeGitRepository(target=oci_project)
101- with admin_logged_in():
102- self.repository_set.setDefaultRepository(
103- oci_project, repository, force_oci=True)
104- identity_path = "%s/+oci/%s" % (
105- oci_project.distribution.name, oci_project.name)
106- self.assertEqual(
107- identity_path, repository.shortened_path, "shortened path")
108- self.assertEqual(
109- "lp:%s" % identity_path, repository.git_identity, "git identity")
110-
111 def test_setDefaultRepositoryForOwner_noop(self):
112 # If a repository is already the target owner default, setting
113 # the default again should no-op.
114@@ -3767,12 +3742,6 @@ class TestGitRepositorySetDefaultsPackage(
115 class TestGitRepositorySetDefaultsOCIProject(
116 TestGitRepositorySetDefaultsMixin, TestCaseWithFactory):
117
118- def setUp(self):
119- super(TestGitRepositorySetDefaultsOCIProject, self).setUp()
120- self.set_method = (lambda target, repository, user:
121- self.repository_set.setDefaultRepository(
122- target, repository, force_oci=True))
123-
124 def makeTarget(self, template=None):
125 kwargs = {}
126 if template is not None:

Subscribers

People subscribed via source and target branches

to status/vote changes: