Files
Gitea/services/context/repo_test.go
T
Giteabot 3af1ee88a5 fix(pull): name the head repository in default compare links (#39075) (#39079)
Backport #39075 by @4RH1T3CT0R7

The "New Pull Request" buttons and the `/pulls/new/{branch}` redirect
build their compare link as `{owner}:{branch}`. If a fork and its parent
share an owner, through ALLOW_FORK_INTO_SAME_OWNER, or after a transfer,
that head resolves back to the base repo, so the link compares the base
against itself and 404s on a branch that only exists in the fork.

Switching to `{owner}/{repo}:{branch}` names the head repo
unambiguously, and it's what the compare page's own links already use.

Also clears the 404 in #37649; the archived-parent half of that report
is separate.

Co-authored-by: Artem Lytkin <146867384+4RH1T3CT0R7@users.noreply.github.com>
2026-08-24 20:26:27 +00:00

26 lines
705 B
Go

// Copyright 2026 The Gitea Authors. All rights reserved.
// SPDX-License-Identifier: MIT
package context
import (
"testing"
repo_model "gitea.dev/models/repo"
"gitea.dev/modules/setting"
"gitea.dev/modules/test"
"github.com/stretchr/testify/assert"
)
func TestCompareHeadRef(t *testing.T) {
defer test.MockVariableValue(&setting.Repository.AllowForkIntoSameOwner)()
headRepo := &repo_model.Repository{OwnerName: "user", Name: "fork"}
setting.Repository.AllowForkIntoSameOwner = false
assert.Equal(t, "user:my-branch", CompareHeadRef(headRepo, "my-branch"))
setting.Repository.AllowForkIntoSameOwner = true
assert.Equal(t, "user/fork:my-branch", CompareHeadRef(headRepo, "my-branch"))
}