diff --git a/server/src/main/scala/scabot/server/Actors.scala b/server/src/main/scala/scabot/server/Actors.scala index 3315d3f..635a936 100644 --- a/server/src/main/scala/scabot/server/Actors.scala +++ b/server/src/main/scala/scabot/server/Actors.scala @@ -497,20 +497,32 @@ trait Actors extends github.GithubApi with jenkins.JenkinsApi with lightbend.Lig } if (lastOnly(pull.title)) Future.successful(Nil) - else (for { - commits <- pullRequestCommits + else { + val temp = for { + commits <- pullRequestCommits + lastSha = commits.lastOption.map(_.sha).getOrElse("") + } yield (commits, lastSha) - lastSha = commits.lastOption.map(_.sha).getOrElse("") - if commits.nonEmpty && commits.tail.nonEmpty && causeSha != lastSha // ignore if caused by an update to the last commit - - earlierStati <- Future.sequence(commits.init.map(c => githubApi.commitStatus(c.sha))) + (for { + (commits, lastSha) <- temp + if commits.nonEmpty && commits.tail.nonEmpty && causeSha != lastSha // ignore if caused by an update to the last commit - lastStss <- githubApi.commitStatus(lastSha).map(_.statuses) + earlierStati <- Future.sequence(commits.init.map(c => githubApi.commitStatus(c.sha))) - posting <- combine(earlierStati, lastSha, lastStss) + lastStss <- githubApi.commitStatus(lastSha).map(_.statuses) - } yield posting).recover { case _: NoSuchElementException => Nil } + posting <- combine(earlierStati, lastSha, lastStss) + } yield posting).recoverWith { + case _: NoSuchElementException => { + for { + (commits, lastSha) <- temp + if commits.nonEmpty && commits.tail.isEmpty + posting <- postLast(lastSha, "Single commit Pull Request", SUCCESS, List[CommitStatus]()) + } yield List(posting) + } + } recover { case _: NoSuchElementException => Nil } } + } // MILESTONE