Example #1
0
 def get_revision_dict(self):
     """
     Get dictionary of all revisions with a list of buildnumbers (int) that used that particular revision
     """
     revs = defaultdict(list)
     if 'builds' not in self._data:
         raise NoBuildData(repr(self))
     for buildnumber in self.get_build_ids():
         revs[self.get_build(buildnumber).get_revision()].append(
             buildnumber)
     return revs
Example #2
0
 def get_build_dict(self):
     if "builds" not in self._data:
         raise NoBuildData(repr(self))
     builds = self._data["builds"]
     last_build = self._data['lastBuild']
     if builds and last_build and builds[0]['number'] != last_build['number']:
         builds = [last_build] + builds
     # FIXME SO how is this supposed to work if build is false-y?
     # I don't think that builds *can* be false here, so I don't
     # understand the test above.
     return dict((build["number"], build["url"]) for build in builds)
Example #3
0
    def _buildid_for_type(self, buildtype):
        """Gets a buildid for a given type of build"""
        self.poll()
        KNOWNBUILDTYPES = [
            "lastStableBuild", "lastSuccessfulBuild", "lastBuild",
            "lastCompletedBuild", "firstBuild", "lastFailedBuild"
        ]
        assert buildtype in KNOWNBUILDTYPES, 'Unknown build info type: %s' % buildtype

        if not self._data.get(buildtype):
            raise NoBuildData(buildtype)
        return self._data[buildtype]["number"]
Example #4
0
 def get_build_dict(self):
     builds = self.poll(tree='builds[number,url]')
     if not builds:
         raise NoBuildData(repr(self))
     builds = self._add_missing_builds(builds)
     builds = builds['builds']
     last_build = self.poll(tree='lastBuild[number,url]')['lastBuild']
     if builds and last_build and \
             builds[0]['number'] != last_build['number']:
         builds = [last_build] + builds
     # FIXME SO how is this supposed to work if build is false-y?
     # I don't think that builds *can* be false here, so I don't
     # understand the test above.
     return dict((build["number"], build["url"]) for build in builds)
Example #5
0
    def get_build_by_params(self, build_params, order=1):
        first_build_number = self.get_first_buildnumber()
        last_build_number = self.get_last_buildnumber()
        if order != 1 and order != -1:
            raise ValueError(
                'Direction should be ascending or descending (1/-1)')

        for number in range(first_build_number,
                            last_build_number + 1)[::order]:
            build = self.get_build(number)
            if build.get_params() == build_params:
                return build

        raise NoBuildData(
            'No build with such params {params}'.format(params=build_params))