mozreview: add fields to disable autoland in custom hosting service (bug 1243530) r?mdoglio draft
authorDan Minor <dminor@mozilla.com>
Tue, 02 Feb 2016 15:28:00 -0500
changeset 7257 7652953040b03dd1a4868fc4c8edaa0a729f2c6e
parent 7212 312fdb6a15c5dba73bf8fee8345ed3785da7d5b7
child 7258 59ef8c812574dc30e591812dcd471e312703ef97
push id640
push userdminor@mozilla.com
push dateTue, 16 Feb 2016 14:37:29 +0000
reviewersmdoglio
bugs1243530
mozreview: add fields to disable autoland in custom hosting service (bug 1243530) r?mdoglio MozReview-Commit-ID: EtvIW0rsPPZ
pylib/mozreview/mozreview/hostingservice/hmo_repository.py
pylib/mozreview/mozreview/tests/test-autoland-concurrent.py
pylib/mozreview/mozreview/tests/test-autoland-inbound.py
pylib/mozreview/mozreview/tests/test-autoland-try.py
pylib/mozreview/mozreview/tests/test-hostingservice.py
testing/vcttesting/unittest.py
--- 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'):