Merge lp:~rvb/launchpad/perm-845803 into lp:launchpad

Proposed by Raphaël Badin
Status: Merged
Approved by: Julian Edwards
Approved revision: no longer in the source branch.
Merged at revision: 13919
Proposed branch: lp:~rvb/launchpad/perm-845803
Merge into: lp:launchpad
Diff against target: 97 lines (+44/-8)
3 files modified
lib/lp/soyuz/browser/archive.py (+16/-6)
lib/lp/soyuz/browser/tests/test_archive_admin_view.py (+27/-1)
lib/lp/soyuz/stories/ppa/xx-ppa-workflow.txt (+1/-1)
To merge this branch: bzr merge lp:~rvb/launchpad/perm-845803
Reviewer Review Type Date Requested Status
Julian Edwards (community) Approve
Review via email: mp+74874@code.launchpad.net

Commit message

[r=julian-edwards][bug=845803] Remove call to canSetEnabledRestrictedFamilies

Description of the change

This branch fixes a regression introduced by a bad merge which left a call to a removed method (!): canSetEnabledRestrictedFamilies. This was not picked up by our test suite because this happened in a part of the code that was not covered by tests. This branch fixes this and adds a proper test for this.

= Tests =

./bin/test -vvc test_archive_admin_view test_cannot_change_enabled_restricted_families

= QA =

Edit a ppa archive (https://launchpad.dev/~me/+archive/ppa/+admin) and change the values of "Require virtualized builders" and "Enabled restricted families". "Enabled restricted families" should only be modifiable if "Require virtualized builders" is True.

To post a comment you must log in.
Revision history for this message
Julian Edwards (julian-edwards) :
review: Approve

Preview Diff

[H/L] Next/Prev Comment, [J/K] Next/Prev File, [N/P] Next/Prev Hunk
=== modified file 'lib/lp/soyuz/browser/archive.py'
--- lib/lp/soyuz/browser/archive.py 2011-09-06 15:00:37 +0000
+++ lib/lp/soyuz/browser/archive.py 2011-09-12 13:59:50 +0000
@@ -2066,6 +2066,12 @@
2066 self.setFieldError('require_virtualized', error_msg)2066 self.setFieldError('require_virtualized', error_msg)
20672067
20682068
2069ARCHIVE_ENABLED_RESTRICTED_FAMILITES_ERROR_MSG = (
2070 u'Main archives can not be restricted to certain '
2071 'architectures unless they are set to build on '
2072 'virtualized builders.')
2073
2074
2069class ArchiveAdminView(BaseArchiveEditView, EnableRestrictedFamiliesMixin):2075class ArchiveAdminView(BaseArchiveEditView, EnableRestrictedFamiliesMixin):
20702076
2071 field_names = ['enabled', 'private', 'commercial', 'require_virtualized',2077 field_names = ['enabled', 'private', 'commercial', 'require_virtualized',
@@ -2131,14 +2137,18 @@
2131 'Can only set commericial for private archives.')2137 'Can only set commericial for private archives.')
21322138
2133 enabled_restricted_families = data.get('enabled_restricted_families')2139 enabled_restricted_families = data.get('enabled_restricted_families')
2134 if (enabled_restricted_families and2140 require_virtualized = data.get('require_virtualized')
2135 not self.context.canSetEnabledRestrictedFamilies(2141 proc_family_set = getUtility(IProcessorFamilySet)
2136 enabled_restricted_families)):2142 if (enabled_restricted_families is not None and
2143 not require_virtualized and
2144 set(enabled_restricted_families) !=
2145 set(proc_family_set.getRestricted())):
2137 self.setFieldError(2146 self.setFieldError(
2138 'enabled_restricted_families',2147 'enabled_restricted_families',
2139 'Main archives can not be restricted to certain '2148 ARCHIVE_ENABLED_RESTRICTED_FAMILITES_ERROR_MSG)
2140 'architectures unless they are set to build on '2149 self.setFieldError(
2141 'virtualized builders.')2150 'require_virtualized',
2151 ARCHIVE_ENABLED_RESTRICTED_FAMILITES_ERROR_MSG)
21422152
2143 @property2153 @property
2144 def owner_is_private_team(self):2154 def owner_is_private_team(self):
21452155
=== modified file 'lib/lp/soyuz/browser/tests/test_archive_admin_view.py'
--- lib/lp/soyuz/browser/tests/test_archive_admin_view.py 2010-10-04 19:50:45 +0000
+++ lib/lp/soyuz/browser/tests/test_archive_admin_view.py 2011-09-12 13:59:50 +0000
@@ -71,7 +71,7 @@
71 self.assertFalse(view.context.private)71 self.assertFalse(view.context.private)
7272
73 def test_set_private_without_buildd_secret(self):73 def test_set_private_without_buildd_secret(self):
74 """If a PPA is marked private but no buildd secret is specified, 74 """If a PPA is marked private but no buildd secret is specified,
75 one will be generated."""75 one will be generated."""
76 view = self.initialize_admin_view(private=True, buildd_secret='')76 view = self.initialize_admin_view(private=True, buildd_secret='')
77 self.assertEqual(0, len(view.errors))77 self.assertEqual(0, len(view.errors))
@@ -101,3 +101,29 @@
101 'This archive already has published sources. '101 'This archive already has published sources. '
102 'It is not possible to switch the privacy.',102 'It is not possible to switch the privacy.',
103 view.errors[0])103 view.errors[0])
104
105 def test_cannot_change_enabled_restricted_families(self):
106 # If require_virtualized is False, enabled_restricted_families
107 # cannot be changed.
108 method = 'POST'
109 form = {
110 'field.enabled': 'on',
111 'field.require_virtualized': '',
112 'field.enabled_restricted_families': [],
113 'field.actions.save': 'Save',
114 }
115
116 view = ArchiveAdminView(self.ppa, LaunchpadTestRequest(
117 method=method, form=form))
118 view.initialize()
119
120 error_msg = (
121 u'Main archives can not be restricted to certain '
122 'architectures unless they are set to build on '
123 'virtualized builders.')
124 self.assertEqual(
125 error_msg,
126 view.widget_errors.get('enabled_restricted_families'))
127 self.assertEqual(
128 error_msg,
129 view.widget_errors.get('require_virtualized'))
104130
=== modified file 'lib/lp/soyuz/stories/ppa/xx-ppa-workflow.txt'
--- lib/lp/soyuz/stories/ppa/xx-ppa-workflow.txt 2011-01-29 00:19:18 +0000
+++ lib/lp/soyuz/stories/ppa/xx-ppa-workflow.txt 2011-09-12 13:59:50 +0000
@@ -363,7 +363,7 @@
363 >>> admin_browser.getControl(name="field.commercial").value = True363 >>> admin_browser.getControl(name="field.commercial").value = True
364 >>> admin_browser.getControl(name="field.buildd_secret").value = "secret"364 >>> admin_browser.getControl(name="field.buildd_secret").value = "secret"
365 >>> admin_browser.getControl(365 >>> admin_browser.getControl(
366 ... name="field.require_virtualized").value = False366 ... name="field.require_virtualized").value = True
367 >>> admin_browser.getControl(name="field.authorized_size").value = '1'367 >>> admin_browser.getControl(name="field.authorized_size").value = '1'
368 >>> admin_browser.getControl(368 >>> admin_browser.getControl(
369 ... name="field.relative_build_score").value = '199'369 ... name="field.relative_build_score").value = '199'