62 lines · 2.0 KB · Go
RawDownload
// 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)	})}