add get_version method
Add a method to get the Jenkins server (or master) version Signed-off-by: Antoine Musso <hashar@free.fr> Change-Id: I9bbcf5fd1615246e53a9d83fec9d0c93c64b15aa
This commit is contained in:
@@ -330,6 +330,31 @@ class Jenkins(object):
|
||||
raise JenkinsException("Could not parse JSON info for server[%s]"
|
||||
% self.server)
|
||||
|
||||
def get_version(self):
|
||||
"""Get the version of this Master.
|
||||
|
||||
:returns: This master's version number ``str``
|
||||
|
||||
Example::
|
||||
|
||||
>>> j = Jenkins()
|
||||
>>> info = j.get_version()
|
||||
>>> print info
|
||||
>>> 1.541
|
||||
|
||||
"""
|
||||
try:
|
||||
request = Request(self.server)
|
||||
request.add_header('X-Jenkins', '0.0')
|
||||
response = urlopen(request)
|
||||
return response.info().getheader('X-Jenkins')
|
||||
except HTTPError:
|
||||
raise JenkinsException("Error communicating with server[%s]"
|
||||
% self.server)
|
||||
except BadStatusLine:
|
||||
raise JenkinsException("Error communicating with server[%s]"
|
||||
% self.server)
|
||||
|
||||
def get_jobs(self):
|
||||
"""Get list of jobs running.
|
||||
|
||||
|
||||
@@ -5,7 +5,7 @@ if sys.version_info < (2, 7):
|
||||
else:
|
||||
import unittest
|
||||
|
||||
from mock import patch
|
||||
from mock import patch, Mock
|
||||
import six
|
||||
|
||||
from tests.helper import jenkins
|
||||
@@ -494,6 +494,41 @@ class JenkinsTest(unittest.TestCase):
|
||||
jenkins_mock.call_args[0][0].get_full_url(),
|
||||
u'http://example.com/job/TestJob/api/json?depth=0')
|
||||
|
||||
@patch('jenkins.urlopen')
|
||||
def test_get_version__some_version(self, urlopen_mock):
|
||||
j = jenkins.Jenkins('http://example.com/', 'test', 'test')
|
||||
|
||||
mock_response = Mock()
|
||||
config = {'info.return_value.getheader.return_value': 'Version42'}
|
||||
mock_response.configure_mock(**config)
|
||||
urlopen_mock.side_effect = [mock_response]
|
||||
self.assertEqual(j.get_version(), 'Version42')
|
||||
|
||||
@patch('jenkins.urlopen')
|
||||
def test_get_version__HTTPError(self, urlopen_mock):
|
||||
urlopen_mock.side_effect = jenkins.HTTPError(
|
||||
'http://example.com/',
|
||||
code=503,
|
||||
msg="internal server error",
|
||||
hdrs=[],
|
||||
fp=None)
|
||||
j = jenkins.Jenkins('http://example.com/', 'test', 'test')
|
||||
with self.assertRaises(jenkins.JenkinsException) as context_manager:
|
||||
j.get_version()
|
||||
self.assertEqual(
|
||||
str(context_manager.exception),
|
||||
'Error communicating with server[http://example.com/]')
|
||||
|
||||
@patch('jenkins.urlopen')
|
||||
def test_get_version__BadStatusLine(self, urlopen_mock):
|
||||
urlopen_mock.side_effect = jenkins.BadStatusLine('not a valid status line')
|
||||
j = jenkins.Jenkins('http://example.com/', 'test', 'test')
|
||||
with self.assertRaises(jenkins.JenkinsException) as context_manager:
|
||||
j.get_version()
|
||||
self.assertEqual(
|
||||
str(context_manager.exception),
|
||||
'Error communicating with server[http://example.com/]')
|
||||
|
||||
@patch.object(jenkins.Jenkins, 'jenkins_open')
|
||||
def test_get_jobs(self, jenkins_mock):
|
||||
jobs = {
|
||||
|
||||
Reference in New Issue
Block a user