@@ -15,6 +15,65 @@ import (
1515 "github.com/stretchr/testify/require"
1616)
1717
18+ func TestTypedRepositoryCommitPaginationDefaults (t * testing.T ) {
19+ for _ , protocol := range []string {"2025-11-25" , inventory .ProtocolVersionMultiRoundTrip } {
20+ t .Run (protocol , func (t * testing.T ) {
21+ for _ , tool := range []inventory.ServerTool {
22+ GetCommit (translations .NullTranslationHelper ),
23+ ListCommits (translations .NullTranslationHelper ),
24+ } {
25+ t .Run (tool .Tool .Name , func (t * testing.T ) {
26+ for _ , tc := range []struct {
27+ name string
28+ args map [string ]any
29+ }{
30+ {"omitted" , map [string ]any {}},
31+ {"numeric_zero" , map [string ]any {"page" : 0 , "perPage" : 0 }},
32+ {"string_zero" , map [string ]any {"page" : "0" , "perPage" : "0" }},
33+ } {
34+ t .Run (tc .name , func (t * testing.T ) {
35+ calls := 0
36+ handler := func (w http.ResponseWriter , r * http.Request ) {
37+ calls ++
38+ assert .Equal (t , "1" , r .URL .Query ().Get ("page" ))
39+ assert .Equal (t , "30" , r .URL .Query ().Get ("per_page" ))
40+ var response any = & github.RepositoryCommit {SHA : github .Ptr ("abc123" )}
41+ if tool .Tool .Name == "list_commits" {
42+ response = []* github.RepositoryCommit {{SHA : github .Ptr ("abc123" )}}
43+ }
44+ mockResponse (t , http .StatusOK , response )(w , r )
45+ }
46+ deps := BaseDeps {Client : mustNewGHClient (t , MockHTTPClientWithHandlers (map [string ]http.HandlerFunc {
47+ GetReposCommitsByOwnerByRepoByRef : handler ,
48+ GetReposCommitsByOwnerByRepo : handler ,
49+ }))}
50+ server := mcp .NewServer (& mcp.Implementation {Name : "commit-pagination-test" , Version : "v1" }, nil )
51+ server .AddReceivingMiddleware (InjectDepsMiddleware (deps ))
52+ tool .RegisterFunc (server , deps )
53+ session := connectCommentVisibilityClient (t , server , protocol )
54+ tc .args ["owner" ] = "owner"
55+ tc .args ["repo" ] = "repo"
56+ if tool .Tool .Name == "get_commit" {
57+ tc .args ["sha" ] = "abc123"
58+ }
59+ result , err := session .CallTool (context .Background (), & mcp.CallToolParams {
60+ Name : tool .Tool .Name , Arguments : tc .args ,
61+ })
62+ require .NoError (t , err )
63+ require .False (t , result .IsError , "%+v" , result )
64+ assert .Equal (t , 1 , calls )
65+ request := createMCPRequest (tc .args )
66+ directResult , err := tool .Handler (deps )(ContextWithDeps (context .Background (), deps ), & request )
67+ require .NoError (t , err )
68+ require .False (t , directResult .IsError , "%+v" , directResult )
69+ assert .Equal (t , 2 , calls )
70+ })
71+ }
72+ })
73+ }
74+ })
75+ }
76+ }
1877func TestTypedRepositoryCommitOutputs (t * testing.T ) {
1978 commit := & github.RepositoryCommit {
2079 SHA : github .Ptr ("abc123" ),
0 commit comments