4
4
package integration
5
5
6
6
import (
7
+ "slices"
7
8
"testing"
8
9
9
10
"code.gitea.io/gitea/models/db"
10
11
repo_model "code.gitea.io/gitea/models/repo"
12
+ "code.gitea.io/gitea/models/unit"
11
13
"code.gitea.io/gitea/models/unittest"
12
14
user_model "code.gitea.io/gitea/models/user"
13
15
"code.gitea.io/gitea/modules/git"
@@ -19,11 +21,13 @@ import (
19
21
"code.gitea.io/gitea/tests"
20
22
21
23
"github.com/stretchr/testify/assert"
24
+ "github.com/stretchr/testify/require"
22
25
)
23
26
24
27
func TestMirrorPull (t * testing.T ) {
25
28
defer tests .PrepareTestEnv (t )()
26
29
30
+ ctx := t .Context ()
27
31
user := unittest .AssertExistsAndLoadBean (t , & user_model.User {ID : 2 })
28
32
repo := unittest .AssertExistsAndLoadBean (t , & repo_model.Repository {ID : 1 })
29
33
repoPath := repo_model .RepoPath (user .Name , repo .Name )
@@ -35,10 +39,10 @@ func TestMirrorPull(t *testing.T) {
35
39
Mirror : true ,
36
40
CloneAddr : repoPath ,
37
41
Wiki : true ,
38
- Releases : false ,
42
+ Releases : true ,
39
43
}
40
44
41
- mirrorRepo , err := repo_service .CreateRepositoryDirectly (db . DefaultContext , user , user , repo_service.CreateRepoOptions {
45
+ mirrorRepo , err := repo_service .CreateRepositoryDirectly (ctx , user , user , repo_service.CreateRepoOptions {
42
46
Name : opts .RepoName ,
43
47
Description : opts .Description ,
44
48
IsPrivate : opts .Private ,
@@ -48,22 +52,27 @@ func TestMirrorPull(t *testing.T) {
48
52
assert .NoError (t , err )
49
53
assert .True (t , mirrorRepo .IsMirror , "expected pull-mirror repo to be marked as a mirror immediately after its creation" )
50
54
51
- ctx := t .Context ()
52
-
53
- mirror , err := repo_service .MigrateRepositoryGitData (ctx , user , mirrorRepo , opts , nil )
55
+ mirrorRepo , err = repo_service .MigrateRepositoryGitData (ctx , user , mirrorRepo , opts , nil )
54
56
assert .NoError (t , err )
55
57
58
+ // these units should have been enabled
59
+ mirrorRepo .Units = nil
60
+ require .NoError (t , mirrorRepo .LoadUnits (ctx ))
61
+ assert .True (t , slices .ContainsFunc (mirrorRepo .Units , func (u * repo_model.RepoUnit ) bool { return u .Type == unit .TypeReleases }))
62
+ assert .True (t , slices .ContainsFunc (mirrorRepo .Units , func (u * repo_model.RepoUnit ) bool { return u .Type == unit .TypeWiki }))
63
+
56
64
gitRepo , err := gitrepo .OpenRepository (git .DefaultContext , repo )
57
65
assert .NoError (t , err )
58
66
defer gitRepo .Close ()
59
67
60
68
findOptions := repo_model.FindReleasesOptions {
61
69
IncludeDrafts : true ,
62
70
IncludeTags : true ,
63
- RepoID : mirror .ID ,
71
+ RepoID : mirrorRepo .ID ,
64
72
}
65
73
initCount , err := db .Count [repo_model.Release ](db .DefaultContext , findOptions )
66
74
assert .NoError (t , err )
75
+ assert .Zero (t , initCount ) // no sync yet, so even though there is a tag in source repo, the mirror's release table is still empty
67
76
68
77
assert .NoError (t , release_service .CreateRelease (gitRepo , & repo_model.Release {
69
78
RepoID : repo .ID ,
@@ -79,12 +88,15 @@ func TestMirrorPull(t *testing.T) {
79
88
IsTag : true ,
80
89
}, nil , "" ))
81
90
82
- _ , err = repo_model .GetMirrorByRepoID (ctx , mirror .ID )
91
+ _ , err = repo_model .GetMirrorByRepoID (ctx , mirrorRepo .ID )
83
92
assert .NoError (t , err )
84
93
85
- ok := mirror_service .SyncPullMirror (ctx , mirror .ID )
94
+ ok := mirror_service .SyncPullMirror (ctx , mirrorRepo .ID )
86
95
assert .True (t , ok )
87
96
97
+ // actually there is a tag in the source repo, so after "sync", that tag will also come into the mirror
98
+ initCount ++
99
+
88
100
count , err := db .Count [repo_model.Release ](db .DefaultContext , findOptions )
89
101
assert .NoError (t , err )
90
102
assert .EqualValues (t , initCount + 1 , count )
@@ -93,7 +105,7 @@ func TestMirrorPull(t *testing.T) {
93
105
assert .NoError (t , err )
94
106
assert .NoError (t , release_service .DeleteReleaseByID (ctx , repo , release , user , true ))
95
107
96
- ok = mirror_service .SyncPullMirror (ctx , mirror .ID )
108
+ ok = mirror_service .SyncPullMirror (ctx , mirrorRepo .ID )
97
109
assert .True (t , ok )
98
110
99
111
count , err = db .Count [repo_model.Release ](db .DefaultContext , findOptions )
0 commit comments