mozreview: add fields to disable autoland in custom hosting service (
bug 1243530) r?mdoglio
MozReview-Commit-ID: EtvIW0rsPPZ
--- a/pylib/mozreview/mozreview/hostingservice/hmo_repository.py
+++ b/pylib/mozreview/mozreview/hostingservice/hmo_repository.py
@@ -8,23 +8,33 @@ from reviewboard.hostingsvcs.service imp
class HMORepositoryForm(HostingServiceForm):
repository_url = forms.CharField(
label=_('Repository URL'),
max_length=255,
required=True,
widget=forms.TextInput(attrs={'size': '60'}),
help_text=_('Canonical url for repository'))
+ autolanding_to_try_enabled = forms.BooleanField(
+ initial=False,
+ label=_('Autoland to try'),
+ help_text=_('Allow Autolanding to try repository'))
+
try_repository_url = forms.CharField(
label=_('Try Repository URL'),
max_length=255,
required=False,
widget=forms.TextInput(attrs={'size': '60'}),
help_text=_('URL for associated Try repository (if any)'))
+ autolanding_enabled = forms.BooleanField(
+ initial=False,
+ label=_('Autoland to landing repository'),
+ help_text=_('Allow Autolanding to landing repository'))
+
landing_repository_url = forms.CharField(
label=_('Autoland Repository URL'),
max_length=255,
required=False,
widget=forms.TextInput(attrs={'size': '60'}),
help_text=_('URL for repository to land completed work (if any)'))
landing_bookmark = forms.CharField(
--- a/pylib/mozreview/mozreview/tests/test-autoland-concurrent.py
+++ b/pylib/mozreview/mozreview/tests/test-autoland-concurrent.py
@@ -118,18 +118,18 @@ class AutolandConcurrentTest(MozReviewWe
# We should not be able to trigger a Try run without a HostingService
# with an associated try repository.
self.reviewboard_login('mjane@example.com', 'password2')
self.load_rburl('r/1')
try_btn = self.browser.find_element_by_id('autoland-try-trigger')
self.assertEqual(
try_btn.value_of_css_property('opacity'), '0.5')
self.add_hostingservice(1, 'Sirius Black', 'scm_level_1',
- 'ssh://hg.example.com/try',
- 'ssh://hg.example.com/mainline', '')
+ True, 'ssh://hg.example.com/try',
+ True, 'ssh://hg.example.com/mainline', '')
# We should also not be able to trigger a Try run unless the review is
# published.
self.reviewboard_login('mjane@example.com', 'password2')
self.load_rburl('r/1')
try_btn = self.browser.find_element_by_id('autoland-try-trigger')
self.assertEqual(
try_btn.value_of_css_property('opacity'), '0.5')
--- a/pylib/mozreview/mozreview/tests/test-autoland-inbound.py
+++ b/pylib/mozreview/mozreview/tests/test-autoland-inbound.py
@@ -77,18 +77,17 @@ class AutolandInboundTest(MozReviewWebDr
# We should not be able to land to inbound without a HostingService
# with an associated inbound repository.
self.reviewboard_login('mjane@example.com', 'password2')
self.load_rburl('r/1')
autoland_btn = self.browser.find_element_by_id('autoland-trigger')
self.assertEqual(
autoland_btn.value_of_css_property('opacity'), '0.5')
self.add_hostingservice(1, 'Sirius Black', 'scm_level_1',
- 'try',
- 'inbound', '')
+ True, 'try', True, 'inbound', '')
# We should also not be able to land to inbound unless the review is
# published.
self.reviewboard_login('mjane@example.com', 'password2')
self.load_rburl('r/1')
autoland_btn = self.browser.find_element_by_id('autoland-trigger')
self.assertEqual(
autoland_btn.value_of_css_property('opacity'), '0.5')
--- a/pylib/mozreview/mozreview/tests/test-autoland-try.py
+++ b/pylib/mozreview/mozreview/tests/test-autoland-try.py
@@ -62,18 +62,17 @@ class AutolandTryTest(MozReviewWebDriver
# We should not be able to trigger a Try run without a HostingService
# with an associated try repository.
self.reviewboard_login('mjane@example.com', 'password2')
self.load_rburl('r/1')
try_btn = self.browser.find_element_by_id('autoland-try-trigger')
self.assertEqual(
try_btn.value_of_css_property('opacity'), '0.5')
self.add_hostingservice(1, 'Sirius Black', 'scm_level_1',
- 'ssh://hg.example.com/try',
- 'ssh://hg.example.com/mainline', '')
+ True, 'try', True, 'inbound', '')
# We should also not be able to trigger a Try run unless the review is
# published.
self.reviewboard_login('mjane@example.com', 'password2')
self.load_rburl('r/1')
try_btn = self.browser.find_element_by_id('autoland-try-trigger')
self.assertEqual(
try_btn.value_of_css_property('opacity'), '0.5')
--- a/pylib/mozreview/mozreview/tests/test-hostingservice.py
+++ b/pylib/mozreview/mozreview/tests/test-hostingservice.py
@@ -23,18 +23,18 @@ class HostingServiceTest(MozReviewWebDri
bb = self.user_bugzilla('mjane@example.com')
bb.create_bug('TestProduct', 'TestComponent', 'First Bug')
lr = self.create_basic_repo('mjane@example.com', 'mjane')
lr.write('foo', 'first change')
lr.run(['commit', '-m', 'Bug 1 - Test try'])
lr.run(['push'])
self.add_hostingservice(1, 'Sirius Black', 'scm_level_3',
- 'ssh://hg.example.com/try',
- 'ssh://hg.example.com/mainline', '')
+ True, 'ssh://hg.example.com/try',
+ True, 'ssh://hg.example.com/mainline', '')
# If we visit the review url, we should be able to find repository
# information
self.reviewboard_login('mjane@example.com', 'password')
self.load_rburl('r/1')
el = self.browser.find_element_by_id('repository')
self.assertEqual(el.get_attribute('data-required-ldap-group'),
@@ -68,19 +68,25 @@ class HostingServiceTest(MozReviewWebDri
el = self.browser.find_element_by_id('id_hosting_account_username')
el.send_keys('Sirius Black')
except ElementNotVisibleException:
pass
el = self.browser.find_element_by_id('id_repository_url')
el.send_keys('https://new-repo.example.com')
+ el = self.browser.find_element_by_id('id_autolanding_to_try_enabled')
+ el.click()
+
el = self.browser.find_element_by_id('id_try_repository_url')
el.send_keys('https://new-try-repo.example.com')
+ el = self.browser.find_element_by_id('id_autolanding_enabled')
+ el.click()
+
el = self.browser.find_element_by_id('id_landing_repository_url')
el.send_keys('https://new-landing-repo.example.com')
el = self.browser.find_element_by_id('id_required_ldap_group')
el.send_keys(Keys.BACKSPACE)
el.send_keys('1')
el.send_keys(Keys.RETURN)
--- a/testing/vcttesting/unittest.py
+++ b/testing/vcttesting/unittest.py
@@ -327,17 +327,18 @@ class MozReviewWebDriverTest(MozReviewTe
def dump_reviewboard_log(self):
"""Dump the reviewboard log to stdout to help debug failing tests"""
subprocess.call('docker exec %s cat /reviewboard/logs/reviewboard.log' %
self.mr.rbweb_id, shell=True)
def add_hostingservice(self, repo, account_username, required_ldap_group,
- try_repository_url, landing_repository_url,
+ autolanding_to_try_enabled, try_repository_url,
+ autolanding_enabled, landing_repository_url,
landing_bookmark):
"""This adds a hosting service to an existing account"""
self.reviewboard_login('admin@example.com', 'password')
self.load_rburl('/admin/db/scmtools/repository/%s/' % repo)
el = self.browser.find_element_by_id('id_path')
path = el.get_attribute('value')
@@ -350,19 +351,27 @@ class MozReviewWebDriverTest(MozReviewTe
el = self.browser.find_element_by_id('id_hosting_account_username')
el.send_keys(account_username)
except ElementNotVisibleException:
pass
el = self.browser.find_element_by_id('id_repository_url')
el.send_keys(path)
+ el = self.browser.find_element_by_id('id_autolanding_to_try_enabled')
+ if el.get_attribute('checked') != autolanding_to_try_enabled:
+ el.click()
+
el = self.browser.find_element_by_id('id_try_repository_url')
el.send_keys(try_repository_url)
+ el = self.browser.find_element_by_id('id_autolanding_enabled')
+ if el.get_attribute('checked') != autolanding_enabled:
+ el.click()
+
el = self.browser.find_element_by_id('id_landing_repository_url')
el.send_keys(landing_repository_url)
el = self.browser.find_element_by_id('id_landing_bookmark')
el.send_keys(landing_bookmark)
el = self.browser.find_element_by_id('id_required_ldap_group')
for c in el.get_attribute('value'):