MCPcopy Create free account
hub / github.com/cli/cli / TestFetchLatestRelease

Function TestFetchLatestRelease

pkg/cmd/release/shared/fetch_test.go:96–160  ·  view source on GitHub ↗
(t *testing.T)

Source from the content-addressed store, hash-verified

94}
95
96func TestFetchLatestRelease(t *testing.T) {
97 tests := []struct {
98 name string
99 responseStatus int
100 responseBody string
101 expectedTag string
102 expectedErr error
103 errorMessage string
104 }{
105 {
106 name: "found (200)",
107 responseStatus: 200,
108 responseBody: `{"tag_name": "v1.2.3"}`,
109 expectedTag: "v1.2.3",
110 },
111 {
112 name: "not found (404)",
113 responseStatus: 404,
114 expectedErr: ErrReleaseNotFound,
115 },
116 {
117 name: "server error (500)",
118 responseStatus: 500,
119 errorMessage: "HTTP 500",
120 },
121 }
122
123 for _, tt := range tests {
124 t.Run(tt.name, func(t *testing.T) {
125 fakeHTTP := &httpmock.Registry{}
126 defer fakeHTTP.Verify(t)
127
128 repo, err := ghrepo.FromFullName("owner/repo")
129 require.NoError(t, err)
130
131 if tt.responseStatus > 299 {
132 fakeHTTP.Register(
133 httpmock.REST("GET", "repos/owner/repo/releases/latest"),
134 httpmock.JSONErrorResponse(tt.responseStatus, api.HTTPError{
135 StatusCode: tt.responseStatus,
136 Message: "some error",
137 }),
138 )
139 } else {
140 fakeHTTP.Register(
141 httpmock.REST("GET", "repos/owner/repo/releases/latest"),
142 httpmock.StatusStringResponse(tt.responseStatus, tt.responseBody),
143 )
144 }
145
146 release, err := FetchLatestRelease(context.Background(), &http.Client{Transport: fakeHTTP}, repo)
147
148 switch {
149 case tt.expectedErr != nil:
150 require.ErrorIs(t, err, tt.expectedErr)
151 case tt.errorMessage != "":
152 require.Error(t, err)
153 assert.Contains(t, err.Error(), tt.errorMessage)

Callers

nothing calls this directly

Calls 11

VerifyMethod · 0.95
RegisterMethod · 0.95
FromFullNameFunction · 0.92
RESTFunction · 0.92
JSONErrorResponseFunction · 0.92
StatusStringResponseFunction · 0.92
FetchLatestReleaseFunction · 0.85
ContainsMethod · 0.80
EqualMethod · 0.80
RunMethod · 0.65
ErrorMethod · 0.45

Tested by

no test coverage detected