diff --git a/jenkins/__init__.py b/jenkins/__init__.py index ebfb5cf..8085ab0 100644 --- a/jenkins/__init__.py +++ b/jenkins/__init__.py @@ -273,6 +273,8 @@ class Jenkins(object): ) elif e.code == 404: raise NotFoundException('Requested item could not be found') + else: + raise except URLError as e: raise JenkinsException('Error in request: %s' % (e.reason)) diff --git a/tests/test_jenkins.py b/tests/test_jenkins.py index 090e507..9341203 100644 --- a/tests/test_jenkins.py +++ b/tests/test_jenkins.py @@ -7,6 +7,7 @@ else: from mock import patch, Mock import six +from six.moves.urllib.error import HTTPError from tests.helper import jenkins @@ -222,6 +223,26 @@ class JenkinsTest(unittest.TestCase): jenkins_mock.call_args[0][0].get_full_url(), 'http://example.com/job/TestJob') + @patch('jenkins.urlopen') + def test_jenkins_open__501(self, jenkins_mock): + jenkins_mock.side_effect = jenkins.HTTPError( + 'http://example.com/job/TestJob', + code=501, + msg="Not implemented", + hdrs=[], + fp=None) + j = jenkins.Jenkins('http://example.com/', 'test', 'test') + request = jenkins.Request('http://example.com/job/TestJob') + + with self.assertRaises(HTTPError) as context_manager: + j.jenkins_open(request, add_crumb=False) + self.assertEqual( + str(context_manager.exception), + 'HTTP Error 501: Not implemented') + self.assertEqual( + jenkins_mock.call_args[0][0].get_full_url(), + 'http://example.com/job/TestJob') + @patch('jenkins.urlopen') def test_jenkins_open__timeout(self, jenkins_mock): jenkins_mock.side_effect = jenkins.URLError(