|
8 | 8 | "context" |
9 | 9 | "fmt" |
10 | 10 | "net/http" |
| 11 | + "net/http/httptest" |
11 | 12 | "net/url" |
12 | 13 | "os" |
13 | 14 | "testing" |
@@ -262,23 +263,26 @@ func doAPIMergePullRequest(ctx APITestContext, owner, repo string, index int64) |
262 | 263 | return func(t *testing.T) { |
263 | 264 | urlStr := fmt.Sprintf("/api/v1/repos/%s/%s/pulls/%d/merge?token=%s", |
264 | 265 | owner, repo, index, ctx.Token) |
265 | | - req := NewRequestWithJSON(t, http.MethodPost, urlStr, &forms.MergePullRequestForm{ |
266 | | - MergeMessageField: "doAPIMergePullRequest Merge", |
267 | | - Do: string(repo_model.MergeStyleMerge), |
268 | | - }) |
269 | 266 |
|
270 | | - resp := ctx.Session.MakeRequest(t, req, NoExpectedStatus) |
| 267 | + var req *http.Request |
| 268 | + var resp *httptest.ResponseRecorder |
271 | 269 |
|
272 | | - if resp.Code == http.StatusMethodNotAllowed { |
273 | | - err := api.APIError{} |
274 | | - DecodeJSON(t, resp, &err) |
275 | | - assert.EqualValues(t, "Please try again later", err.Message) |
276 | | - queue.GetManager().FlushAll(context.Background(), 5*time.Second) |
| 270 | + for i := 0; i < 6; i++ { |
277 | 271 | req = NewRequestWithJSON(t, http.MethodPost, urlStr, &forms.MergePullRequestForm{ |
278 | 272 | MergeMessageField: "doAPIMergePullRequest Merge", |
279 | 273 | Do: string(repo_model.MergeStyleMerge), |
280 | 274 | }) |
| 275 | + |
281 | 276 | resp = ctx.Session.MakeRequest(t, req, NoExpectedStatus) |
| 277 | + |
| 278 | + if resp.Code != http.StatusMethodNotAllowed { |
| 279 | + break |
| 280 | + } |
| 281 | + err := api.APIError{} |
| 282 | + DecodeJSON(t, resp, &err) |
| 283 | + assert.EqualValues(t, "Please try again later", err.Message) |
| 284 | + queue.GetManager().FlushAll(context.Background(), 5*time.Second) |
| 285 | + <-time.After(1 * time.Second) |
282 | 286 | } |
283 | 287 |
|
284 | 288 | expected := ctx.ExpectedCode |
|
0 commit comments