def try_result()

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