Skip to content

Commit fd9dcfe

Browse files
authored
test(e2e): pr not marked as mergeable immediately (#350)
1 parent c8dda2a commit fd9dcfe

File tree

2 files changed

+34
-4
lines changed

2 files changed

+34
-4
lines changed

test/e2e/forgejo/forge.go

Lines changed: 32 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -3,10 +3,12 @@ package forgejo
33
import (
44
"context"
55
"fmt"
6+
"io"
67
"log/slog"
78
"os/exec"
89
"strings"
910
"testing"
11+
"time"
1012

1113
"codeberg.org/mvdkleijn/forgejo-sdk/forgejo/v2"
1214
"github.com/go-git/go-git/v5/plumbing/transport"
@@ -143,12 +145,40 @@ func (f *TestForge) ListOpenPRs(t *testing.T, repo *e2e.Repository) ([]*git.Pull
143145
func (f *TestForge) MergePR(t *testing.T, repo *e2e.Repository, pr *git.PullRequest) error {
144146
t.Helper()
145147

146-
ok, _, err := f.client.MergePullRequest(f.username, repo.Name, pr.ID, forgejo.MergePullRequestOption{Style: forgejo.MergeStyleSquash})
148+
// Wait for the PR to become mergable
149+
retries := 10
150+
sleep := 1 * time.Second
151+
152+
var fPR *forgejo.PullRequest
153+
var err error
154+
for range retries {
155+
fPR, _, err = f.client.GetPullRequest(f.username, repo.Name, pr.ID)
156+
if err != nil {
157+
t.Logf("sleeping, error while checking pr mergeable status: %v", err)
158+
time.Sleep(sleep)
159+
continue
160+
}
161+
162+
if !fPR.Mergeable {
163+
t.Log("sleeping, pr not marked as mergeable yet")
164+
time.Sleep(sleep)
165+
continue
166+
}
167+
168+
break
169+
}
170+
171+
if !fPR.Mergeable {
172+
return fmt.Errorf("pull request not marked as mergable by forgejo after retries")
173+
}
174+
175+
ok, resp, err := f.client.MergePullRequest(f.username, repo.Name, pr.ID, forgejo.MergePullRequestOption{Style: forgejo.MergeStyleSquash})
147176
if err != nil {
148177
return err
149178
}
150179
if !ok {
151-
return fmt.Errorf("merging pull request #%d failed", pr.ID)
180+
respBody, _ := io.ReadAll(resp.Body)
181+
return fmt.Errorf("merging pull request #%d failed: %v", pr.ID, string(respBody))
152182
}
153183

154184
return nil

test/e2e/framework.go

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -107,10 +107,10 @@ func (f *Framework) Run(t *testing.T, r *Repository, extraFiles []string) error
107107
stderrString := stderr.String()
108108

109109
if stdoutString != "" {
110-
t.Log("STDOUT: \n", stdoutString)
110+
t.Log("STDOUT:\n", stdoutString)
111111
}
112112
if stderrString != "" {
113-
t.Log("STDERR: \n", stderrString)
113+
t.Log("STDERR:\n", stderrString)
114114
}
115115

116116
return err

0 commit comments

Comments
 (0)