in sync/landing.py [0:0]
def try_result(self, try_push: TryPush | None = None,
tasks: TryPushTasks | None = None) -> TryPushResult:
"""Determine whether a try push has infra failures, or an acceptable
level of test passes for the current build"""
if try_push is None:
try_push = self.latest_try_push
if try_push is None:
raise ValueError("No try push found")
target_success_rate = 0.5 if not try_push.stability else 0.8
if try_push.infra_fail and not try_push.accept_failures:
return TryPushResult.infra_fail
if tasks is None:
tasks = try_push.tasks()
if tasks is None:
# This can happen if the taskgroup_id is not yet set
return TryPushResult.pending
if not tasks.complete(allow_unscheduled=True):
return TryPushResult.pending
if tasks.success():
return TryPushResult.success
if tasks.failed_builds() and not try_push.accept_failures:
return TryPushResult.infra_fail
if (tasks.failure_limit_exceeded(target_success_rate) and
not try_push.accept_failures):
return TryPushResult.too_many_failures
return TryPushResult.acceptable_failures