Skip to content

Commit 3e33da0

Browse files
committed
+ test info on empty results
1 parent 0b1326a commit 3e33da0

2 files changed

Lines changed: 24 additions & 12 deletions

File tree

jenkins_cli/cli.py

Lines changed: 13 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -27,6 +27,12 @@ class JenkinsCli(object):
2727

2828
QUEUE_EMPTY_TEXT = "Building Queue is empty"
2929

30+
INFO_TEMPLATE = ("Last build name: %s (result: %s)\n"
31+
"Last success build name: %s\n"
32+
"Build started: %s\n"
33+
"Building now: %s\n"
34+
"%s branch set to: %s")
35+
3036
def __init__(self, args, timeout=socket._GLOBAL_DEFAULT_TIMEOUT):
3137
self.jenkins = self.auth(args.host, args.username, args.password, timeout)
3238

@@ -116,25 +122,20 @@ def info(self, args):
116122
job_info = {}
117123
last_build = job_info.get('lastBuild', {})
118124
last_success_build = job_info.get('lastSuccessfulBuild', {})
119-
info = ("Last build name: %s (result: %s)\n"
120-
"Last success build name: %s\n"
121-
"Build started: %s\n"
122-
"Building now: %s\n"
123-
"%s branch set to: %s")
124125
xml = self.jenkins.get_job_config(job_name)
125126
root = ElementTree.fromstring(xml.encode('utf-8'))
126127
scm_name, branch_node = self._get_scm_name_and_node(root)
127128
if branch_node is not None:
128129
branch_name = branch_node.text
129130
else:
130131
branch_name = 'Unknown branch'
131-
print(info % (last_build.get('fullDisplayName', 'Not Built'),
132-
last_build.get('result', 'Not Built'),
133-
last_success_build.get('fullDisplayName', 'Not Built'),
134-
datetime.datetime.fromtimestamp(last_build['timestamp'] / 1000) if last_build else 'Not built',
135-
'Yes' if last_build.get('building') else 'No',
136-
scm_name,
137-
branch_name))
132+
print(self.INFO_TEMPLATE % (last_build.get('fullDisplayName', 'Not Built'),
133+
last_build.get('result', 'Not Built'),
134+
last_success_build.get('fullDisplayName', 'Not Built'),
135+
datetime.datetime.fromtimestamp(last_build['timestamp'] / 1000) if last_build else 'Not Built',
136+
'Yes' if last_build.get('building') else 'No',
137+
scm_name,
138+
branch_name))
138139

139140
def set_branch(self, args):
140141
job_name = self._check_job(args.job_name)

tests/test_cli.py

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -191,5 +191,16 @@ def test_get_scm_name_and_node(self):
191191
self.assertEqual(name, 'UnknownSCM')
192192
self.assertEqual(branch_node, None)
193193

194+
@mock.patch.object(jenkins.Jenkins, 'get_job_config')
195+
@mock.patch.object(jenkins.Jenkins, 'get_job_info')
196+
@mock.patch.object(jenkins.Jenkins, 'get_job_name', return_value='Job1')
197+
def test_info(self, patched_get_job_name, patched_get_job_info, patched_get_job_config):
198+
self.args.job_name = "Job1"
199+
patched_get_job_info.return_value = {}
200+
patched_get_job_config.return_value = EMPTY_SCM_XML
201+
JenkinsCli(self.args).info(self.args)
202+
arg = JenkinsCli.INFO_TEMPLATE % ('Not Built', 'Not Built', 'Not Built', 'Not Built', 'No', 'UnknownSCM', 'Unknown branch')
203+
self.patched_print.assert_has_calls([mock.call(arg)])
204+
194205
if __name__ == '__main__':
195206
unittest.main()

0 commit comments

Comments
 (0)