fix: address self-review findings on PR #90
PR Ready Gate / clear-labels (pull_request) Successful in 2s
CI / test (pull_request) Successful in 17s
CI / review (anthropic--claude-4.6-sonnet, sonnet, SONNET_REVIEW_TOKEN) (pull_request) Successful in 33s
CI / review (gpt-5, security, ., rodin/security-patterns, SECURITY_REVIEW.md, SECURITY_REVIEW_TOKEN) (pull_request) Successful in 48s
CI / review (gpt-5, gpt, GPT_REVIEW_TOKEN) (pull_request) Successful in 2m44s
PR Ready Gate / clear-labels (pull_request) Successful in 2s
CI / test (pull_request) Successful in 17s
CI / review (anthropic--claude-4.6-sonnet, sonnet, SONNET_REVIEW_TOKEN) (pull_request) Successful in 33s
CI / review (gpt-5, security, ., rodin/security-patterns, SECURITY_REVIEW.md, SECURITY_REVIEW_TOKEN) (pull_request) Successful in 48s
CI / review (gpt-5, gpt, GPT_REVIEW_TOKEN) (pull_request) Successful in 2m44s
- Remove unused error return from BuildPositionToLineMap (always nil) - Add comment explaining intentional CommitID drop in PostReview - Refactor TestAdapter_PostReview_WithComments to route by URL path - Add TestAdapter_GetFileContent_RefRouting test - Acknowledge maxPosition O(n) with code comment - Remove redundant TestAdapter_CompileTimeCheck (compile-time var _ exists) - Fix GetPullRequestFiles comment (Patch field is omitted, not 'set to empty') - Acknowledge translateEvent fallback as intentional design
This commit is contained in:
+53
-20
@@ -5,6 +5,7 @@ import (
|
||||
"encoding/json"
|
||||
"net/http"
|
||||
"net/http/httptest"
|
||||
"strings"
|
||||
"testing"
|
||||
|
||||
"gitea.weiker.me/rodin/review-bot/gitea"
|
||||
@@ -229,30 +230,33 @@ func TestAdapter_PostReview_WithComments_PositionTranslation(t *testing.T) {
|
||||
Body string `json:"body"`
|
||||
}
|
||||
|
||||
call := 0
|
||||
server := httptest.NewServer(http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) {
|
||||
call++
|
||||
w.Header().Set("Content-Type", "application/json")
|
||||
if call == 1 {
|
||||
if strings.HasSuffix(r.URL.Path, ".diff") {
|
||||
// Diff request
|
||||
w.Write([]byte(diff))
|
||||
return
|
||||
}
|
||||
// Review post
|
||||
var payload struct {
|
||||
Comments []struct {
|
||||
Path string `json:"path"`
|
||||
NewPosition int64 `json:"new_position"`
|
||||
Body string `json:"body"`
|
||||
} `json:"comments"`
|
||||
if strings.HasSuffix(r.URL.Path, "/reviews") {
|
||||
// Review post
|
||||
var payload struct {
|
||||
Comments []struct {
|
||||
Path string `json:"path"`
|
||||
NewPosition int64 `json:"new_position"`
|
||||
Body string `json:"body"`
|
||||
} `json:"comments"`
|
||||
}
|
||||
json.NewDecoder(r.Body).Decode(&payload)
|
||||
gotComments = payload.Comments
|
||||
json.NewEncoder(w).Encode(map[string]any{
|
||||
"id": 1,
|
||||
"body": "review",
|
||||
"user": map[string]any{"login": "bot"},
|
||||
})
|
||||
return
|
||||
}
|
||||
json.NewDecoder(r.Body).Decode(&payload)
|
||||
gotComments = payload.Comments
|
||||
json.NewEncoder(w).Encode(map[string]any{
|
||||
"id": 1,
|
||||
"body": "review",
|
||||
"user": map[string]any{"login": "bot"},
|
||||
})
|
||||
t.Errorf("unexpected request: %s %s", r.Method, r.URL.Path)
|
||||
w.WriteHeader(http.StatusNotFound)
|
||||
}))
|
||||
defer server.Close()
|
||||
|
||||
@@ -350,7 +354,36 @@ func TestAdapter_ListContents(t *testing.T) {
|
||||
}
|
||||
}
|
||||
|
||||
func TestAdapter_CompileTimeCheck(t *testing.T) {
|
||||
// This is a compile-time assertion — if it compiles, the adapter satisfies vcs.Client
|
||||
var _ vcs.Client = (*gitea.Adapter)(nil)
|
||||
|
||||
func TestAdapter_GetFileContent_RefRouting(t *testing.T) {
|
||||
server := httptest.NewServer(http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) {
|
||||
// When ref is provided, the URL should contain ?ref=
|
||||
if r.URL.RawQuery != "" && strings.Contains(r.URL.RawQuery, "ref=") {
|
||||
w.Write([]byte("content-at-ref"))
|
||||
} else {
|
||||
w.Write([]byte("content-default"))
|
||||
}
|
||||
}))
|
||||
defer server.Close()
|
||||
|
||||
client := gitea.NewClient(server.URL, "token")
|
||||
adapter := gitea.NewAdapter(client)
|
||||
|
||||
// Empty ref → routes to GetFileContent (no ?ref= query param)
|
||||
got, err := adapter.GetFileContent(context.Background(), "owner", "repo", "main.go", "")
|
||||
if err != nil {
|
||||
t.Fatalf("GetFileContent(ref=\"\"): %v", err)
|
||||
}
|
||||
if got != "content-default" {
|
||||
t.Errorf("GetFileContent(ref=\"\") = %q, want %q", got, "content-default")
|
||||
}
|
||||
|
||||
// Non-empty ref → routes to GetFileContentRef (with ?ref= query param)
|
||||
got, err = adapter.GetFileContent(context.Background(), "owner", "repo", "main.go", "abc123")
|
||||
if err != nil {
|
||||
t.Fatalf("GetFileContent(ref=\"abc123\"): %v", err)
|
||||
}
|
||||
if got != "content-at-ref" {
|
||||
t.Errorf("GetFileContent(ref=\"abc123\") = %q, want %q", got, "content-at-ref")
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user