feat: add context.Context + unexport client fields
CI / test (pull_request) Successful in 13s
CI / review (gpt-5, sonnet, SONNET_REVIEW_TOKEN) (pull_request) Successful in 54s
CI / review (gpt-5-mini, gpt, GPT_REVIEW_TOKEN) (pull_request) Successful in 1m22s

REVIEW.md findings 1-4, 14:
- All Gitea client methods now accept context.Context as first param
- All LLM client methods now accept context.Context as first param
- Use http.NewRequestWithContext for cancellation/timeout support
- Main uses 3-minute timeout context for all operations
- Unexport Client struct fields (baseURL, token, apiKey, etc.)
- Use bytes.NewReader instead of strings.NewReader(string(...))
This commit is contained in:
Rodin
2026-05-01 12:31:41 -07:00
parent f77ea171c3
commit 27e0056f29
6 changed files with 112 additions and 99 deletions
+7 -4
View File
@@ -3,6 +3,7 @@
package main
import (
"context"
"os"
"strconv"
"testing"
@@ -44,7 +45,7 @@ func TestIntegration_FullReviewFlow(t *testing.T) {
// Parse owner/repo
owner, repoName := "", ""
for i, c := range giteaRepo {
if c == / {
if c == '/' {
owner = giteaRepo[:i]
repoName = giteaRepo[i+1:]
break
@@ -54,16 +55,18 @@ func TestIntegration_FullReviewFlow(t *testing.T) {
t.Fatalf("Invalid repo format %q", giteaRepo)
}
ctx := context.Background()
// Step 1: Fetch PR
giteaClient := gitea.NewClient(giteaURL, giteaToken)
pr, err := giteaClient.GetPullRequest(owner, repoName, prNumber)
pr, err := giteaClient.GetPullRequest(ctx, owner, repoName, prNumber)
if err != nil {
t.Fatalf("GetPullRequest: %v", err)
}
t.Logf("PR: %s (sha: %s)", pr.Title, pr.Head.Sha)
// Step 2: Fetch diff
diff, err := giteaClient.GetPullRequestDiff(owner, repoName, prNumber)
diff, err := giteaClient.GetPullRequestDiff(ctx, owner, repoName, prNumber)
if err != nil {
t.Fatalf("GetPullRequestDiff: %v", err)
}
@@ -78,7 +81,7 @@ func TestIntegration_FullReviewFlow(t *testing.T) {
// Step 4: Call LLM
llmClient := llm.NewClient(llmBaseURL, llmAPIKey, llmModel)
response, err := llmClient.Complete([]llm.Message{
response, err := llmClient.Complete(ctx, []llm.Message{
{Role: "system", Content: systemPrompt},
{Role: "user", Content: userPrompt},
})