// Copyright 2025 The Gitea Authors. All rights reserved. // SPDX-License-Identifier: MIT package repository import ( "os" "testing" "code.gitea.io/gitea/models/db" repo_model "code.gitea.io/gitea/models/repo" "code.gitea.io/gitea/models/unittest" user_model "code.gitea.io/gitea/models/user" "code.gitea.io/gitea/modules/git" "code.gitea.io/gitea/modules/util" "github.com/stretchr/testify/assert" ) func TestCreateRepositoryDirectly(t *testing.T) { assert.NoError(t, unittest.PrepareTestDatabase()) // a successful creating repository user2 := unittest.AssertExistsAndLoadBean(t, &user_model.User{ID: 2}) createdRepo, err := CreateRepositoryDirectly(git.DefaultContext, user2, user2, CreateRepoOptions{ Name: "created-repo", }, true) assert.NoError(t, err) assert.NotNil(t, createdRepo) exist, err := util.IsExist(repo_model.RepoPath(user2.Name, createdRepo.Name)) assert.NoError(t, err) assert.True(t, exist) unittest.AssertExistsAndLoadBean(t, &repo_model.Repository{OwnerName: user2.Name, Name: createdRepo.Name}) err = DeleteRepositoryDirectly(db.DefaultContext, user2, createdRepo.ID) assert.NoError(t, err) // a failed creating because some mock data // create the repository directory so that the creation will fail after database record created. assert.NoError(t, os.MkdirAll(repo_model.RepoPath(user2.Name, createdRepo.Name), os.ModePerm)) createdRepo2, err := CreateRepositoryDirectly(db.DefaultContext, user2, user2, CreateRepoOptions{ Name: "created-repo", }, true) assert.Nil(t, createdRepo2) assert.Error(t, err) // assert the cleanup is successful unittest.AssertNotExistsBean(t, &repo_model.Repository{OwnerName: user2.Name, Name: createdRepo.Name}) exist, err = util.IsExist(repo_model.RepoPath(user2.Name, createdRepo.Name)) assert.NoError(t, err) assert.False(t, exist) }