feat(vcs): Gitea adapter with diff-position translation
Implements the Gitea adapter (gitea.Adapter) that satisfies vcs.Client. Key components: - gitea/adapter.go: Adapter struct wrapping *Client with all vcs.Client methods - gitea/position.go: BuildPositionToLineMap for diff-position → line translation - gitea/adapter_test.go: Tests for all mapping methods and event translation - gitea/position_test.go: Tests for position translation edge cases Translation details: - ReviewEvent: APPROVE → APPROVED (Gitea-native) - PostReview: fetches diff, builds position map, translates each comment - Deletion-targeted positions map to nearest non-deletion line below - All field-mapping methods tested (GetPullRequest, GetPullRequestFiles, ListReviews, GetCommitStatuses, ListContents) Also: - Added Base field to gitea.PullRequest struct - Updated conformance tests to assert Adapter (not raw Client) satisfies vcs.Client - Removed phase2 build tag from conformance tests Closes #79
This commit is contained in:
@@ -1,5 +1,3 @@
|
||||
//go:build phase2
|
||||
|
||||
package gitea_test
|
||||
|
||||
import (
|
||||
@@ -7,19 +5,6 @@ import (
|
||||
"gitea.weiker.me/rodin/review-bot/vcs"
|
||||
)
|
||||
|
||||
// Compile-time interface conformance assertions.
|
||||
// These will verify gitea.Client satisfies vcs interfaces once the Phase 2
|
||||
// adapter bridges the method signature gaps:
|
||||
//
|
||||
// - PRReader: GetPullRequest returns *gitea.PullRequest (needs *vcs.PullRequest)
|
||||
// - PRReader: GetPullRequestFiles returns []gitea.ChangedFile (needs []vcs.ChangedFile)
|
||||
// - FileReader: GetFileContent lacks ref parameter
|
||||
// - Reviewer: PostReview uses (event, body, comments) instead of vcs.ReviewRequest
|
||||
//
|
||||
// Remove the phase2 build tag once the adapter is complete.
|
||||
var (
|
||||
_ vcs.PRReader = (*gitea.Client)(nil)
|
||||
_ vcs.FileReader = (*gitea.Client)(nil)
|
||||
_ vcs.Reviewer = (*gitea.Client)(nil)
|
||||
_ vcs.Identity = (*gitea.Client)(nil)
|
||||
)
|
||||
// Compile-time interface conformance assertion.
|
||||
// The Adapter (not the raw Client) satisfies the full vcs.Client interface.
|
||||
var _ vcs.Client = (*gitea.Adapter)(nil)
|
||||
|
||||
Reference in New Issue
Block a user