Skip to content

Commit

Permalink
Remove mocking from tests; use http4s directly
Browse files Browse the repository at this point in the history
This is needed for scala3
  • Loading branch information
Daenyth committed Jul 5, 2021
1 parent 8b5cf66 commit b5421dc
Show file tree
Hide file tree
Showing 26 changed files with 1,587 additions and 1,017 deletions.
3 changes: 1 addition & 2 deletions .jvmopts
Original file line number Diff line number Diff line change
@@ -1,9 +1,8 @@
# Cats jvmopts see https://weblogs.java.net/blog/kcpeppe/archive/2013/12/11/case-study-jvm-hotspot-flags
-Dfile.encoding=UTF8
-Xms2G
-Xmx6G
-Xss64m
-XX:MaxMetaspaceSize=512M
-XX:MaxMetaspaceSize=1024M
-XX:ReservedCodeCacheSize=250M
-XX:+TieredCompilation
-XX:-UseGCOverheadLimit
Expand Down
104 changes: 83 additions & 21 deletions github4s/src/main/scala/github4s/Decoders.scala
Original file line number Diff line number Diff line change
Expand Up @@ -17,15 +17,10 @@
package github4s

import cats.data.NonEmptyList
import cats.instances.either._
import cats.instances.list._
import cats.syntax.either._
import cats.syntax.list._
import cats.syntax.traverse._
import cats.syntax.all._
import github4s.domain._
import io.circe.Decoder.Result
import io.circe._
import io.circe.generic.auto._
import io.circe.generic.semiauto.deriveDecoder

/**
Expand All @@ -38,6 +33,8 @@ object Decoders {
html_url: Option[String]
)

implicit val decodeAuthor: Decoder[Author] = deriveDecoder[Author]

implicit val decodeCommit: Decoder[Commit] = Decoder.instance { c =>
for {
sha <- c.downField("sha").as[String]
Expand Down Expand Up @@ -80,8 +77,10 @@ object Decoders {
)
}

def readRepoUrls(c: HCursor): Either[DecodingFailure, List[Option[String]]] =
RepoUrlKeys.allFields.traverse(name => c.downField(name).as[Option[String]])
def readRepoUrls(c: HCursor): Either[DecodingFailure, Map[String, String]] =
RepoUrlKeys.allFields
.traverse(name => c.downField(name).as[Option[String]].map(_.map(value => name -> value)))
.map(_.flatten.toMap)

implicit val decodeStatusRepository: Decoder[StatusRepository] = {
Decoder.instance { c =>
Expand All @@ -102,9 +101,7 @@ object Decoders {
`private` = priv,
description = description,
fork = fork,
urls = (RepoUrlKeys.allFields zip repoUrls.flatten map { case (urlName, value) =>
urlName -> value
}).toMap
urls = repoUrls
)
}
}
Expand Down Expand Up @@ -146,6 +143,7 @@ object Decoders {
ssh_url <- c.downField("ssh_url").as[String]
clone_url <- c.downField("clone_url").as[String]
svn_url <- c.downField("svn_url").as[String]
permissions <- c.downField("permissions").as[Option[RepoPermissions]]
repoUrls <- readRepoUrls(c)
} yield RepositoryBase(
id = id,
Expand All @@ -162,6 +160,7 @@ object Decoders {
homepage = homepage,
language = language,
organization = organization,
permissions = permissions,
status = RepoStatus(
size = size,
stargazers_count = stargazers_count,
Expand All @@ -184,7 +183,7 @@ object Decoders {
ssh_url = ssh_url,
clone_url = clone_url,
svn_url = svn_url,
otherUrls = (RepoUrlKeys.allFields zip repoUrls.flatten).toMap
otherUrls = repoUrls
)
)
}
Expand Down Expand Up @@ -242,6 +241,31 @@ object Decoders {
)
)

implicit val decoderCreatePullRequestData: Decoder[CreatePullRequestData] =
deriveDecoder[CreatePullRequestData]
implicit val decoderCreatePullRequestIssue: Decoder[CreatePullRequestIssue] =
deriveDecoder[CreatePullRequestIssue]
implicit val decoderNewBlobRequest: Decoder[NewBlobRequest] = deriveDecoder[NewBlobRequest]
implicit val decoderNewGistRequest: Decoder[NewGistRequest] = deriveDecoder[NewGistRequest]
implicit val decoderNewIssueRequest: Decoder[NewIssueRequest] = deriveDecoder[NewIssueRequest]
implicit val decoderNewReleaseRequest: Decoder[NewReleaseRequest] =
deriveDecoder[NewReleaseRequest]
implicit val decoderSubscriptionRequest: Decoder[SubscriptionRequest] =
deriveDecoder[SubscriptionRequest]
implicit val decoderTreeData: Decoder[TreeData] = {
val sha = deriveDecoder[TreeDataSha]
val blob = deriveDecoder[TreeDataBlob]
sha.widen[TreeData] or blob.widen[TreeData]
}
implicit val decoderUpdateReferenceRequest: Decoder[UpdateReferenceRequest] =
deriveDecoder[UpdateReferenceRequest]
implicit val decoderWriteFileRequest: Decoder[WriteFileRequest] = deriveDecoder[WriteFileRequest]
implicit val decoderReviewersRequest: Decoder[ReviewersRequest] = deriveDecoder[ReviewersRequest]
implicit val decoderNewStatusRequest: Decoder[NewStatusRequest] = deriveDecoder[NewStatusRequest]
implicit val decoderNewTagRequest: Decoder[NewTagRequest] = deriveDecoder[NewTagRequest]
implicit val decoderNewTreeRequest: Decoder[NewTreeRequest] = deriveDecoder[NewTreeRequest]
implicit val decoderNewCommitRequest: Decoder[NewCommitRequest] = deriveDecoder[NewCommitRequest]

implicit def decodeNonEmptyList[T](implicit D: Decoder[T]): Decoder[NonEmptyList[T]] = {

def decodeCursors(cursors: List[HCursor]): Result[NonEmptyList[T]] =
Expand All @@ -257,26 +281,37 @@ object Decoders {
}
}

implicit val decoderCommitter: Decoder[Committer] = deriveDecoder[Committer]
implicit val decoderWriteResponseCommit: Decoder[WriteResponseCommit] =
deriveDecoder[WriteResponseCommit]
implicit val decoderWriteFileResponse: Decoder[WriteFileResponse] =
deriveDecoder[WriteFileResponse]
implicit val decoderPullRequestFile: Decoder[PullRequestFile] = deriveDecoder[PullRequestFile]
implicit val decoderPullRequestReview: Decoder[PullRequestReview] =
deriveDecoder[PullRequestReview]
implicit val decoderPullRequest: Decoder[PullRequest] = deriveDecoder[PullRequest]
implicit val decoderRef: Decoder[Ref] = deriveDecoder[Ref]
implicit val decoderRefCommit: Decoder[RefCommit] = deriveDecoder[RefCommit]
implicit val decoderRefInfo: Decoder[RefInfo] = deriveDecoder[RefInfo]
implicit val decoderTreeResult: Decoder[TreeResult] = deriveDecoder[TreeResult]
implicit val decoderTag: Decoder[Tag] = deriveDecoder[Tag]
implicit val decoderIssue: Decoder[Issue] = deriveDecoder[Issue]
implicit val decoderUser: Decoder[User] = deriveDecoder[User]

implicit val decoderRepoPermissions: Decoder[RepoPermissions] = deriveDecoder[RepoPermissions]
implicit val decoderPullRequestBase: Decoder[PullRequestBase] = deriveDecoder[PullRequestBase]

implicit val decoderPullRequest: Decoder[PullRequest] = deriveDecoder[PullRequest]
implicit val decoderRefObject: Decoder[RefObject] = deriveDecoder[RefObject]
implicit val decoderRef: Decoder[Ref] = deriveDecoder[Ref]
implicit val decoderRefAuthor: Decoder[RefAuthor] = deriveDecoder[RefAuthor]
implicit val decoderRefCommit: Decoder[RefCommit] = deriveDecoder[RefCommit]
implicit val decoderRefInfo: Decoder[RefInfo] = deriveDecoder[RefInfo]
implicit val decoderTreeDataResult: Decoder[TreeDataResult] = deriveDecoder[TreeDataResult]
implicit val decoderTreeResult: Decoder[TreeResult] = deriveDecoder[TreeResult]
implicit val decoderTag: Decoder[Tag] = deriveDecoder[Tag]
implicit val decoderLabel: Decoder[Label] = deriveDecoder[Label]
implicit val decoderIssuePullRequest: Decoder[IssuePullRequest] = deriveDecoder[IssuePullRequest]
implicit val decoderIssue: Decoder[Issue] = deriveDecoder[Issue]
implicit val decoderSearchIssuesResult: Decoder[SearchIssuesResult] =
deriveDecoder[SearchIssuesResult]
implicit val decoderSearchReposResult: Decoder[SearchReposResult] = deriveDecoder
implicit val decoderComment: Decoder[Comment] = deriveDecoder[Comment]
implicit val decoderUser: Decoder[User] = deriveDecoder[User]
implicit val decoderStatus: Decoder[Status] = deriveDecoder[Status]
implicit val decoderCombinedStatus: Decoder[CombinedStatus] = deriveDecoder[CombinedStatus]
implicit val decoderLabel: Decoder[Label] = deriveDecoder[Label]
implicit val decoderContent: Decoder[Content] = deriveDecoder[Content]
implicit val decoderBlobContent: Decoder[BlobContent] = deriveDecoder[BlobContent]
implicit val decoderSubscription: Decoder[Subscription] = deriveDecoder[Subscription]
Expand All @@ -298,11 +333,38 @@ object Decoders {
)

implicit val decodeTeam: Decoder[Team] = deriveDecoder[Team]
implicit val decodeCreator: Decoder[Creator] = deriveDecoder[Creator]
implicit val decodeMilestone: Decoder[Milestone] = deriveDecoder[Milestone]
implicit val decodeProject: Decoder[Project] = deriveDecoder[Project]
implicit val decodeColumn: Decoder[Column] = deriveDecoder[Column]
implicit val decodeCard: Decoder[Card] = deriveDecoder[Card]

implicit val decodeReviewers: Decoder[ReviewersResponse] =
deriveDecoder[ReviewersResponse]
implicit val decoderCommentData: Decoder[CommentData] = deriveDecoder[CommentData]
implicit val decoderPullRequestReviewEvent: Decoder[PullRequestReviewEvent] =
Decoder[String].emap {
case s if s == PRREventApprove.value => Right(PRREventApprove)
case s if s == PRREventRequestChanges.value => Right(PRREventRequestChanges)
case s if s == PRREventComment.value => Right(PRREventComment)
case s if s == PRREventPending.value => Right(PRREventPending)
case other => Left(s"Bad event: $other")
}
implicit val decoderCreateReviewComment: Decoder[CreateReviewComment] =
deriveDecoder[CreateReviewComment]
implicit val decoderCreatePRReviewRequest: Decoder[CreatePRReviewRequest] =
deriveDecoder[CreatePRReviewRequest]
implicit val decoderCreatePullRequest: Decoder[CreatePullRequest] = {
val data = deriveDecoder[CreatePullRequestData]
val issue = deriveDecoder[CreatePullRequestIssue]
data.widen[CreatePullRequest] or issue.widen[CreatePullRequest]
}
implicit val decoderCreateReferenceRequest: Decoder[CreateReferenceRequest] =
deriveDecoder[CreateReferenceRequest]
implicit val decoderDeleteFileRequest: Decoder[DeleteFileRequest] =
deriveDecoder[DeleteFileRequest]
implicit val decoderEditGistFile: Decoder[EditGistFile] = deriveDecoder[EditGistFile]
implicit val decoderEditGistRequest: Decoder[EditGistRequest] = deriveDecoder[EditGistRequest]
implicit val decoderEditIssueRequest: Decoder[EditIssueRequest] = deriveDecoder[EditIssueRequest]
implicit val decoderMilestoneData: Decoder[MilestoneData] = deriveDecoder[MilestoneData]
}
Loading

0 comments on commit b5421dc

Please sign in to comment.