all_actions.update(dct_action)
return all_actions
+ def get_causes(self):
+ '''
+ Returns a list of causes. There can be multiple causes lists and
+ some of the can be empty. For instance, when a build is manually
+ aborted, Jenkins could add an empty causes list to the actions
+ dict. Empty ones are ignored.
+ '''
+ all_causes = []
+ for dct_action in self._data["actions"]:
+ if dct_action is None:
+ continue
+ if 'causes' in dct_action and dct_action['causes']:
+ all_causes.extend(dct_action['causes'])
+ return all_causes
+
def get_timestamp(self):
'''
Returns build timestamp in UTC
DATA = {
'actions': [{'causes': [{'shortDescription': 'Started by user anonymous',
'userId': None,
- 'userName': 'anonymous'}]}],
+ 'userName': 'anonymous'}]},
+ {'causes': []}],
'artifacts': [],
'building': False,
'builtOn': '',
self.assertEquals(self.b.get_duration().microseconds, 782000)
self.assertEquals(str(self.b.get_duration()), '0:00:05.782000')
+ def test_get_causes(self):
+ self.assertEquals(self.b.get_causes(),
+ [{'shortDescription': 'Started by user anonymous',
+ 'userId': None,
+ 'userName': 'anonymous'}])
+
@mock.patch.object(Build, 'get_data')
def test_build_depth(self, get_data_mock):
build = Build('http://halob:8080/job/foo/98', 98, self.j, depth=0)