Files
python-jenkins/tests/test_script.py
Thanh Ha 7ffb27c7d5 Fix run_scripts() API
Resolve regression caused by I5369a0d35be4bf8b3b197a51e60aba21b5742cc7
preventing run_scripts() from successfully running against the remote
Jenkins instance.

Switching data to a dictionary and passing the script string without
quote() appears to allow the script to successfully run.

Add a magic string ')]}.' as an indicator of if the groovy script
successfully passed or failed. In theory if the groovy script failed
perhaps due to syntax error or some other reason the magic string
will not be printed and we can assume failure.

Change-Id: Ibaffb768ea82c76b44ec5a6cccde8563afe1783f
Signed-off-by: Thanh Ha <zxiiro@linux.com>
2018-06-15 11:37:46 -04:00

86 lines
3.7 KiB
Python

from mock import patch
import jenkins
from tests.base import JenkinsTestBase
class JenkinsScriptTest(JenkinsTestBase):
@patch.object(jenkins.Jenkins, 'jenkins_open')
def test_run_script(self, jenkins_mock):
self.j.run_script(u'println(\"Hello World!\")')
self.assertEqual(
jenkins_mock.call_args[0][0].url,
self.make_url('scriptText'))
self._check_requests(jenkins_mock.call_args_list)
@patch.object(jenkins.Jenkins, 'jenkins_open')
def test_run_script_urlproof(self, jenkins_mock):
self.j.run_script(u'if (a == b && c ==d) { println(\"Yes\")}')
self.assertEqual(
jenkins_mock.call_args[0][0].url,
self.make_url('scriptText'))
self._check_requests(jenkins_mock.call_args_list)
@patch.object(jenkins.Jenkins, 'jenkins_open')
def test_install_plugin(self, jenkins_mock):
'''Installation of plugins is done with the run_script method
'''
j = jenkins.Jenkins(self.make_url(''), 'test', 'test')
j.install_plugin("jabber")
self.assertEqual(
jenkins_mock.call_args[0][0].url,
self.make_url('scriptText'))
self._check_requests(jenkins_mock.call_args_list)
@patch.object(jenkins.Jenkins, 'jenkins_open')
@patch.object(jenkins.Jenkins, 'run_script')
def test_install_plugin_with_dependencies(self, run_script_mock, jenkins_mock):
'''Verify install plugins with dependencies
'''
j = jenkins.Jenkins(self.make_url(''), 'test', 'test')
j.install_plugin("jabber")
self.assertEqual(len(run_script_mock.call_args_list), 2)
self.assertEqual(run_script_mock.call_args_list[0][0][0],
('Jenkins.instance.updateCenter.getPlugin(\"jabber\")'
'.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()'))
@patch.object(jenkins.Jenkins, 'jenkins_open')
@patch.object(jenkins.Jenkins, 'run_script')
def test_install_plugin_without_dependencies(self, run_script_mock, jenkins_mock):
'''Verify install plugins without dependencies
'''
j = jenkins.Jenkins(self.make_url(''), 'test', 'test')
j.install_plugin("jabber", include_dependencies=False)
self.assertEqual(len(run_script_mock.call_args_list), 2)
self.assertEqual(run_script_mock.call_args_list[0][0][0],
('Jenkins.instance.updateCenter'
'.getPlugin(\"jabber\").deploy();'))
self.assertEqual(run_script_mock.call_args_list[1][0][0],
('Jenkins.instance.updateCenter'
'.isRestartRequiredForCompletion()'))
@patch.object(jenkins.Jenkins, 'jenkins_open')
@patch.object(jenkins.Jenkins, 'run_script')
def test_install_plugin_no_restart(self, run_script_mock, jenkins_mock):
'''Verify install plugin does not need a restart
'''
run_script_mock.return_value = u'Result: false\n'
j = jenkins.Jenkins(self.make_url(''), 'test', 'test')
self.assertFalse(j.install_plugin("jabber"))
@patch.object(jenkins.Jenkins, 'jenkins_open')
@patch.object(jenkins.Jenkins, 'run_script')
def test_install_plugin_restart(self, run_script_mock, jenkins_mock):
'''Verify install plugin needs a restart
'''
run_script_mock.return_value = u'Result: true\n'
j = jenkins.Jenkins(self.make_url(''), 'test', 'test')
self.assertTrue(j.install_plugin("jabber"))