2019-10-01 16:40:17 +03:00
// Copyright 2019 The Gitea Authors. All rights reserved.
// Use of this source code is governed by a MIT-style
// license that can be found in the LICENSE file.
package mirror
import (
"path/filepath"
"testing"
"code.gitea.io/gitea/models"
"code.gitea.io/gitea/modules/git"
2020-09-11 01:29:19 +03:00
migration "code.gitea.io/gitea/modules/migrations/base"
2019-12-14 20:30:01 +03:00
"code.gitea.io/gitea/modules/repository"
2019-10-01 16:40:17 +03:00
release_service "code.gitea.io/gitea/services/release"
"github.com/stretchr/testify/assert"
)
func TestMain ( m * testing . M ) {
models . MainTest ( m , filepath . Join ( ".." , ".." ) )
}
func TestRelease_MirrorDelete ( t * testing . T ) {
assert . NoError ( t , models . PrepareTestDatabase ( ) )
user := models . AssertExistsAndLoadBean ( t , & models . User { ID : 2 } ) . ( * models . User )
repo := models . AssertExistsAndLoadBean ( t , & models . Repository { ID : 1 } ) . ( * models . Repository )
repoPath := models . RepoPath ( user . Name , repo . Name )
2020-09-11 01:29:19 +03:00
opts := migration . MigrateOptions {
2019-10-13 16:23:14 +03:00
RepoName : "test_mirror" ,
Description : "Test mirror" ,
Private : false ,
Mirror : true ,
CloneAddr : repoPath ,
Wiki : true ,
Releases : false ,
2019-10-01 16:40:17 +03:00
}
2019-10-13 16:23:14 +03:00
2020-01-12 15:11:17 +03:00
mirrorRepo , err := repository . CreateRepository ( user , user , models . CreateRepoOptions {
2019-10-13 16:23:14 +03:00
Name : opts . RepoName ,
Description : opts . Description ,
IsPrivate : opts . Private ,
IsMirror : opts . Mirror ,
Status : models . RepositoryBeingMigrated ,
} )
assert . NoError ( t , err )
2019-12-14 20:30:01 +03:00
mirror , err := repository . MigrateRepositoryGitData ( user , user , mirrorRepo , opts )
2019-10-01 16:40:17 +03:00
assert . NoError ( t , err )
gitRepo , err := git . OpenRepository ( repoPath )
assert . NoError ( t , err )
2019-11-13 10:01:19 +03:00
defer gitRepo . Close ( )
2019-10-01 16:40:17 +03:00
findOptions := models . FindReleasesOptions { IncludeDrafts : true , IncludeTags : true }
initCount , err := models . GetReleaseCountByRepoID ( mirror . ID , findOptions )
assert . NoError ( t , err )
assert . NoError ( t , release_service . CreateRelease ( gitRepo , & models . Release {
RepoID : repo . ID ,
PublisherID : user . ID ,
TagName : "v0.2" ,
Target : "master" ,
Title : "v0.2 is released" ,
Note : "v0.2 is released" ,
IsDraft : false ,
IsPrerelease : false ,
IsTag : true ,
} , nil ) )
err = mirror . GetMirror ( )
assert . NoError ( t , err )
_ , ok := runSync ( mirror . Mirror )
assert . True ( t , ok )
count , err := models . GetReleaseCountByRepoID ( mirror . ID , findOptions )
2019-11-15 07:54:23 +03:00
assert . NoError ( t , err )
2019-10-01 16:40:17 +03:00
assert . EqualValues ( t , initCount + 1 , count )
release , err := models . GetRelease ( repo . ID , "v0.2" )
assert . NoError ( t , err )
assert . NoError ( t , release_service . DeleteReleaseByID ( release . ID , user , true ) )
_ , ok = runSync ( mirror . Mirror )
assert . True ( t , ok )
count , err = models . GetReleaseCountByRepoID ( mirror . ID , findOptions )
2019-11-15 07:54:23 +03:00
assert . NoError ( t , err )
2019-10-01 16:40:17 +03:00
assert . EqualValues ( t , initCount , count )
}