def find_builds(builds, running_threshold=0):
"""Find finished builds, ignore still running or empty."""
threshold = float(running_threshold) if running_threshold is not None else 0
# filter out empty builds
def non_empty(r):
return r['total'] != 0 and r['total'] > r['skipped'] and not ('build' in r.keys() and r['build'] is None)
builds = {build: result for build, result in iteritems(builds) if non_empty(result)}
finished = {build: result for build, result in iteritems(builds) if not result['unfinished'] or
(100 * float(result['unfinished']) / result['total']) <= threshold}
log.debug("Found the following finished non-empty builds: %s" % ', '.join(finished.keys()))
if len(finished) < 2:
raise NotEnoughBuildsError("not enough finished builds found")
assert len(finished.keys()) >= 2
return finished.keys()
评论列表
文章目录