mirror of
https://codeberg.org/forgejo/forgejo.git
synced 2025-06-09 08:07:40 +00:00
63 lines
2 KiB
Go
63 lines
2 KiB
Go
|
// Copyright 2025 The Forgejo Authors. All rights reserved.
|
||
|
// SPDX-License-Identifier: GPL-3.0-or-later
|
||
|
|
||
|
package pull
|
||
|
|
||
|
import (
|
||
|
"fmt"
|
||
|
"testing"
|
||
|
|
||
|
issues_model "forgejo.org/models/issues"
|
||
|
"forgejo.org/models/unittest"
|
||
|
"forgejo.org/modules/setting"
|
||
|
|
||
|
"github.com/stretchr/testify/assert"
|
||
|
"github.com/stretchr/testify/require"
|
||
|
)
|
||
|
|
||
|
func TestLoadHeadRevision(t *testing.T) {
|
||
|
require.NoError(t, unittest.PrepareTestDatabase())
|
||
|
|
||
|
t.Run("AGit", func(t *testing.T) {
|
||
|
t.Run("New", func(t *testing.T) {
|
||
|
ctx := &testPatchContext{}
|
||
|
require.NoError(t, ctx.LoadHeadRevision(t.Context(), &issues_model.PullRequest{Flow: issues_model.PullRequestFlowAGit, HeadCommitID: "Commit!"}))
|
||
|
|
||
|
assert.Empty(t, ctx.env)
|
||
|
assert.Equal(t, "Commit!", ctx.headRev)
|
||
|
assert.True(t, ctx.headIsCommitID)
|
||
|
})
|
||
|
t.Run("Existing", func(t *testing.T) {
|
||
|
ctx := &testPatchContext{}
|
||
|
require.NoError(t, ctx.LoadHeadRevision(t.Context(), &issues_model.PullRequest{Flow: issues_model.PullRequestFlowAGit, Index: 371}))
|
||
|
|
||
|
assert.Empty(t, ctx.env)
|
||
|
assert.Equal(t, "refs/pull/371/head", ctx.headRev)
|
||
|
assert.False(t, ctx.headIsCommitID)
|
||
|
})
|
||
|
})
|
||
|
|
||
|
t.Run("Same repository", func(t *testing.T) {
|
||
|
ctx := &testPatchContext{}
|
||
|
require.NoError(t, ctx.LoadHeadRevision(t.Context(), unittest.AssertExistsAndLoadBean(t, &issues_model.PullRequest{ID: 1})))
|
||
|
|
||
|
assert.Empty(t, ctx.env)
|
||
|
assert.Equal(t, "refs/heads/branch1", ctx.headRev)
|
||
|
assert.False(t, ctx.headIsCommitID)
|
||
|
})
|
||
|
|
||
|
t.Run("Across repository", func(t *testing.T) {
|
||
|
pr := unittest.AssertExistsAndLoadBean(t, &issues_model.PullRequest{ID: 3})
|
||
|
require.NoError(t, pr.LoadHeadRepo(t.Context()))
|
||
|
|
||
|
ctx := &testPatchContext{}
|
||
|
require.NoError(t, ctx.LoadHeadRevision(t.Context(), pr))
|
||
|
|
||
|
if assert.NotEmpty(t, ctx.env) {
|
||
|
assert.Equal(t, fmt.Sprintf("GIT_ALTERNATE_OBJECT_DIRECTORIES=%s/user13/repo11.git/objects", setting.RepoRootPath), ctx.env[len(ctx.env)-1])
|
||
|
}
|
||
|
assert.Equal(t, "0abcb056019adb8336cf9db3ad9d9cf80cd4b141", ctx.headRev)
|
||
|
assert.True(t, ctx.headIsCommitID)
|
||
|
})
|
||
|
}
|