mirror of
				https://codeberg.org/forgejo/forgejo.git
				synced 2025-11-04 08:21:11 +00:00 
			
		
		
		
	It loads the Commit with a temporary open GitRepo. This is incorrect, the GitRepo should be open as long as the Commit can be used. This mainly removes the usage of this function as it's not needed.
		
			
				
	
	
		
			73 lines
		
	
	
	
		
			2.3 KiB
		
	
	
	
		
			Go
		
	
	
	
	
	
			
		
		
	
	
			73 lines
		
	
	
	
		
			2.3 KiB
		
	
	
	
		
			Go
		
	
	
	
	
	
// Copyright 2018 The Gitea Authors. All rights reserved.
 | 
						|
// SPDX-License-Identifier: MIT
 | 
						|
 | 
						|
package repo
 | 
						|
 | 
						|
import (
 | 
						|
	"testing"
 | 
						|
 | 
						|
	repo_model "code.gitea.io/gitea/models/repo"
 | 
						|
	"code.gitea.io/gitea/models/unittest"
 | 
						|
	"code.gitea.io/gitea/modules/git"
 | 
						|
	"code.gitea.io/gitea/modules/gitrepo"
 | 
						|
	"code.gitea.io/gitea/services/contexttest"
 | 
						|
 | 
						|
	"github.com/stretchr/testify/assert"
 | 
						|
)
 | 
						|
 | 
						|
func TestCleanUploadName(t *testing.T) {
 | 
						|
	unittest.PrepareTestEnv(t)
 | 
						|
 | 
						|
	kases := map[string]string{
 | 
						|
		".git/refs/master":               "",
 | 
						|
		"/root/abc":                      "root/abc",
 | 
						|
		"./../../abc":                    "abc",
 | 
						|
		"a/../.git":                      "",
 | 
						|
		"a/../../../abc":                 "abc",
 | 
						|
		"../../../acd":                   "acd",
 | 
						|
		"../../.git/abc":                 "",
 | 
						|
		"..\\..\\.git/abc":               "..\\..\\.git/abc",
 | 
						|
		"..\\../.git/abc":                "",
 | 
						|
		"..\\../.git":                    "",
 | 
						|
		"abc/../def":                     "def",
 | 
						|
		".drone.yml":                     ".drone.yml",
 | 
						|
		".abc/def/.drone.yml":            ".abc/def/.drone.yml",
 | 
						|
		"..drone.yml.":                   "..drone.yml.",
 | 
						|
		"..a.dotty...name...":            "..a.dotty...name...",
 | 
						|
		"..a.dotty../.folder../.name...": "..a.dotty../.folder../.name...",
 | 
						|
	}
 | 
						|
	for k, v := range kases {
 | 
						|
		assert.EqualValues(t, cleanUploadFileName(k), v)
 | 
						|
	}
 | 
						|
}
 | 
						|
 | 
						|
func TestGetUniquePatchBranchName(t *testing.T) {
 | 
						|
	unittest.PrepareTestEnv(t)
 | 
						|
	ctx, _ := contexttest.MockContext(t, "user2/repo1")
 | 
						|
	ctx.SetParams(":id", "1")
 | 
						|
	contexttest.LoadRepo(t, ctx, 1)
 | 
						|
	contexttest.LoadUser(t, ctx, 2)
 | 
						|
	contexttest.LoadGitRepo(t, ctx)
 | 
						|
	defer ctx.Repo.GitRepo.Close()
 | 
						|
 | 
						|
	expectedBranchName := "user2-patch-1"
 | 
						|
	branchName := GetUniquePatchBranchName(ctx)
 | 
						|
	assert.Equal(t, expectedBranchName, branchName)
 | 
						|
}
 | 
						|
 | 
						|
func TestGetClosestParentWithFiles(t *testing.T) {
 | 
						|
	unittest.PrepareTestEnv(t)
 | 
						|
	repo := unittest.AssertExistsAndLoadBean(t, &repo_model.Repository{ID: 1})
 | 
						|
	branch := repo.DefaultBranch
 | 
						|
	gitRepo, _ := gitrepo.OpenRepository(git.DefaultContext, repo)
 | 
						|
	defer gitRepo.Close()
 | 
						|
	commit, _ := gitRepo.GetBranchCommit(branch)
 | 
						|
	var expectedTreePath string // Should return the root dir, empty string, since there are no subdirs in this repo
 | 
						|
	for _, deletedFile := range []string{
 | 
						|
		"dir1/dir2/dir3/file.txt",
 | 
						|
		"file.txt",
 | 
						|
	} {
 | 
						|
		treePath := GetClosestParentWithFiles(deletedFile, commit)
 | 
						|
		assert.Equal(t, expectedTreePath, treePath)
 | 
						|
	}
 | 
						|
}
 |