From 82a000ab9d3b51cb736b7db51e35f09e11cd222a Mon Sep 17 00:00:00 2001 From: Kazuhiro Suzuki Date: Sat, 11 Apr 2020 02:13:41 +0900 Subject: [PATCH] Fix install_script run_script needs explicit println call, and no longer return 'Result: [true|false]' because of appending magic string. Closes-Bug: #1806381 Change-Id: I795000a638d518d0247572318c5dbee068239b87 --- jenkins/__init__.py | 9 +++++---- tests/test_script.py | 12 ++++++------ 2 files changed, 11 insertions(+), 10 deletions(-) diff --git a/jenkins/__init__.py b/jenkins/__init__.py index eb288f5..6bcab6f 100755 --- a/jenkins/__init__.py +++ b/jenkins/__init__.py @@ -1386,12 +1386,13 @@ class Jenkins(object): # run_script is an async call to run groovy. we need to wait a little # before we can get a reliable response on whether a restart is needed time.sleep(2) - is_restart_required = ('Jenkins.instance.updateCenter' - '.isRestartRequiredForCompletion()') + is_restart_required = ('println(' + 'Jenkins.instance.updateCenter' + '.isRestartRequiredForCompletion()' + ')') - # response is a string (i.e. u'Result: true\n'), return a bool instead response_str = self.run_script(is_restart_required) - response = response_str.split(':')[1].strip().lower() == 'true' + response = response_str.strip().lower() == 'true' return response def stop_build(self, name, number): diff --git a/tests/test_script.py b/tests/test_script.py index c39603e..1207406 100644 --- a/tests/test_script.py +++ b/tests/test_script.py @@ -67,8 +67,8 @@ class JenkinsScriptTest(JenkinsTestBase): '.getNeededDependencies().each{it.deploy()};Jenkins' '.instance.updateCenter.getPlugin(\"jabber\").deploy();')) self.assertEqual(run_script_mock.call_args_list[1][0][0], - ('Jenkins.instance.updateCenter' - '.isRestartRequiredForCompletion()')) + ('println(Jenkins.instance.updateCenter' + '.isRestartRequiredForCompletion())')) @patch.object(jenkins.Jenkins, 'jenkins_open') @patch.object(jenkins.Jenkins, 'run_script') @@ -82,17 +82,17 @@ class JenkinsScriptTest(JenkinsTestBase): ('Jenkins.instance.updateCenter' '.getPlugin(\"jabber\").deploy();')) self.assertEqual(run_script_mock.call_args_list[1][0][0], - ('Jenkins.instance.updateCenter' - '.isRestartRequiredForCompletion()')) + ('println(Jenkins.instance.updateCenter' + '.isRestartRequiredForCompletion())')) - @patch.object(jenkins.Jenkins, 'jenkins_open', return_value='\n{}'.format(MAGIC_STR)) + @patch.object(jenkins.Jenkins, 'jenkins_open', return_value='false\n{}'.format(MAGIC_STR)) def test_install_plugin_no_restart(self, jenkins_mock): '''Verify install plugin does not need a restart ''' j = jenkins.Jenkins(self.make_url(''), 'test', 'test') self.assertFalse(j.install_plugin("jabber")) - @patch.object(jenkins.Jenkins, 'jenkins_open', return_value='\n{}'.format(MAGIC_STR)) + @patch.object(jenkins.Jenkins, 'jenkins_open', return_value='true\n{}'.format(MAGIC_STR)) def test_install_plugin_restart(self, jenkins_mock): '''Verify install plugin needs a restart '''