1
0
mirror of https://github.com/goreleaser/goreleaser.git synced 2025-02-01 13:07:49 +02:00

fix: failing when pull_request.base is empty (#4261)

if the base branch is empty, it'll try to fetch the default branch,
which would fail if base repo name/owner are also empty.

the default behavior when base owner/name are missing is to using
head's, so I changed it do that before trying to get the default branch,
which should fix the issue.
This commit is contained in:
Carlos Alexandro Becker 2023-08-27 16:40:40 -03:00 committed by GitHub
parent 94a65fcda1
commit ec0df9ecd5
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
2 changed files with 53 additions and 2 deletions

View File

@ -196,6 +196,8 @@ func (c *githubClient) OpenPullRequest(
draft bool,
) error {
c.checkRateLimit(ctx)
base.Owner = firstNonEmpty(base.Owner, head.Owner)
base.Name = firstNonEmpty(base.Name, head.Name)
if base.Branch == "" {
def, err := c.getDefaultBranch(ctx, base)
if err != nil {
@ -217,8 +219,8 @@ func (c *githubClient) OpenPullRequest(
log.Info("opening pull request")
pr, res, err := c.client.PullRequests.Create(
ctx,
firstNonEmpty(base.Owner, head.Owner),
firstNonEmpty(base.Name, head.Name),
base.Owner,
base.Name,
&github.NewPullRequest{
Title: github.String(title),
Base: github.String(base.Branch),

View File

@ -652,6 +652,55 @@ func TestGitHubOpenPullRequestBaseEmpty(t *testing.T) {
}))
defer srv.Close()
ctx := testctx.NewWithCfg(config.Project{
GitHubURLs: config.GitHubURLs{
API: srv.URL + "/",
},
})
client, err := newGitHub(ctx, "test-token")
require.NoError(t, err)
repo := Repo{
Owner: "someone",
Name: "something",
Branch: "foo",
}
require.NoError(t, client.OpenPullRequest(ctx, Repo{}, repo, "some title", false))
}
func TestGitHubOpenPullRequestHeadEmpty(t *testing.T) {
srv := httptest.NewServer(http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) {
defer r.Body.Close()
if r.URL.Path == "/repos/someone/something/contents/.github/PULL_REQUEST_TEMPLATE.md" {
w.WriteHeader(http.StatusNotFound)
return
}
if r.URL.Path == "/repos/someone/something/pulls" {
r, err := os.Open("testdata/github/pull.json")
require.NoError(t, err)
_, err = io.Copy(w, r)
require.NoError(t, err)
return
}
if r.URL.Path == "/repos/someone/something" {
w.WriteHeader(http.StatusOK)
fmt.Fprint(w, `{"default_branch": "main"}`)
return
}
if r.URL.Path == "/rate_limit" {
w.WriteHeader(http.StatusOK)
fmt.Fprint(w, `{"resources":{"core":{"remaining":120}}}`)
return
}
t.Error("unhandled request: " + r.URL.Path)
}))
defer srv.Close()
ctx := testctx.NewWithCfg(config.Project{
GitHubURLs: config.GitHubURLs{
API: srv.URL + "/",