aboutsummaryrefslogtreecommitdiffstats
path: root/services/repository/fork_test.go
diff options
context:
space:
mode:
Diffstat (limited to 'services/repository/fork_test.go')
-rw-r--r--services/repository/fork_test.go46
1 files changed, 45 insertions, 1 deletions
diff --git a/services/repository/fork_test.go b/services/repository/fork_test.go
index 452798b25b..5375f79028 100644
--- a/services/repository/fork_test.go
+++ b/services/repository/fork_test.go
@@ -4,13 +4,17 @@
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/setting"
+ "code.gitea.io/gitea/modules/test"
+ "code.gitea.io/gitea/modules/util"
"github.com/stretchr/testify/assert"
)
@@ -35,7 +39,7 @@ func TestForkRepository(t *testing.T) {
assert.False(t, repo_model.IsErrReachLimitOfRepo(err))
// change AllowForkWithoutMaximumLimit to false for the test
- setting.Repository.AllowForkWithoutMaximumLimit = false
+ defer test.MockVariableValue(&setting.Repository.AllowForkWithoutMaximumLimit, false)()
// user has reached maximum limit of repositories
user.MaxRepoCreation = 0
fork2, err := ForkRepository(git.DefaultContext, user, user, ForkRepoOptions{
@@ -46,3 +50,43 @@ func TestForkRepository(t *testing.T) {
assert.Nil(t, fork2)
assert.True(t, repo_model.IsErrReachLimitOfRepo(err))
}
+
+func TestForkRepositoryCleanup(t *testing.T) {
+ assert.NoError(t, unittest.PrepareTestDatabase())
+
+ // a successful fork
+ user2 := unittest.AssertExistsAndLoadBean(t, &user_model.User{ID: 2})
+ repo10 := unittest.AssertExistsAndLoadBean(t, &repo_model.Repository{ID: 10})
+
+ fork, err := ForkRepository(git.DefaultContext, user2, user2, ForkRepoOptions{
+ BaseRepo: repo10,
+ Name: "test",
+ })
+ assert.NoError(t, err)
+ assert.NotNil(t, fork)
+
+ exist, err := util.IsExist(repo_model.RepoPath(user2.Name, "test"))
+ assert.NoError(t, err)
+ assert.True(t, exist)
+
+ err = DeleteRepositoryDirectly(db.DefaultContext, fork.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, "test"), os.ModePerm))
+
+ fork2, err := ForkRepository(db.DefaultContext, user2, user2, ForkRepoOptions{
+ BaseRepo: repo10,
+ Name: "test",
+ })
+ assert.Nil(t, fork2)
+ assert.Error(t, err)
+
+ // assert the cleanup is successful
+ unittest.AssertNotExistsBean(t, &repo_model.Repository{OwnerName: user2.Name, Name: "test"})
+
+ exist, err = util.IsExist(repo_model.RepoPath(user2.Name, "test"))
+ assert.NoError(t, err)
+ assert.False(t, exist)
+}