mirror of
https://gitea.com/gitea/gitea-mcp.git
synced 2026-03-25 14:25:13 +00:00
Add three new read-only tools inspired by the GitHub MCP server: - `get_commit`: Get details of a specific commit by SHA, branch, or tag - `get_repository_tree`: Get the file tree of a repository with optional recursive traversal, pagination, and ref support - `search_issues`: Search issues and pull requests across all accessible repositories with filters for state, type, labels, and owner --------- Co-authored-by: Lunny Xiao <xiaolunwen@gmail.com> Reviewed-on: https://gitea.com/gitea/gitea-mcp/pulls/162 Reviewed-by: Lunny Xiao <xiaolunwen@gmail.com> Co-authored-by: silverwind <me@silverwind.io> Co-committed-by: silverwind <me@silverwind.io>
55 lines
1.4 KiB
Go
55 lines
1.4 KiB
Go
package search
|
|
|
|
import (
|
|
"slices"
|
|
"testing"
|
|
|
|
gitea_sdk "code.gitea.io/sdk/gitea"
|
|
)
|
|
|
|
func TestSlimIssues(t *testing.T) {
|
|
issues := []*gitea_sdk.Issue{
|
|
{
|
|
Index: 1,
|
|
Title: "Bug report",
|
|
State: gitea_sdk.StateOpen,
|
|
HTMLURL: "https://gitea.com/org/repo/issues/1",
|
|
Poster: &gitea_sdk.User{UserName: "alice"},
|
|
Labels: []*gitea_sdk.Label{{Name: "bug"}},
|
|
Repository: &gitea_sdk.RepositoryMeta{FullName: "org/repo"},
|
|
PullRequest: nil,
|
|
},
|
|
{
|
|
Index: 2,
|
|
Title: "Add feature",
|
|
State: gitea_sdk.StateOpen,
|
|
Poster: &gitea_sdk.User{UserName: "bob"},
|
|
Repository: &gitea_sdk.RepositoryMeta{FullName: "org/repo"},
|
|
PullRequest: &gitea_sdk.PullRequestMeta{},
|
|
},
|
|
}
|
|
|
|
result := slimIssues(issues)
|
|
if len(result) != 2 {
|
|
t.Fatalf("expected 2 issues, got %d", len(result))
|
|
}
|
|
if result[0]["repository"] != "org/repo" {
|
|
t.Errorf("expected repository org/repo, got %v", result[0]["repository"])
|
|
}
|
|
if result[0]["labels"].([]string)[0] != "bug" {
|
|
t.Errorf("expected label bug, got %v", result[0]["labels"])
|
|
}
|
|
if _, ok := result[0]["is_pull"]; ok {
|
|
t.Error("issue should not have is_pull")
|
|
}
|
|
if result[1]["is_pull"] != true {
|
|
t.Error("PR should have is_pull=true")
|
|
}
|
|
}
|
|
|
|
func TestSearchIssuesToolRequired(t *testing.T) {
|
|
if !slices.Contains(SearchIssuesTool.InputSchema.Required, "query") {
|
|
t.Error("search_issues should require query")
|
|
}
|
|
}
|