@@ -14,15 +14,18 @@ def __init__(self, pid):
1414
1515
1616class FakeGitlabProject (FakeGitProject ):
17- def __init__ (self , pid , owner , name , url ):
17+ def __init__ (self , pid , owner , name , url , is_fork = False ):
1818 super ().__init__ (pid )
1919 self .namespace = {"full_path" : self .fake .word () if owner is None else owner }
2020 self .path = self .fake .word () if name is None else name
2121 self .web_url = self .fake .url () if url is None else url
2222
23+ if is_fork :
24+ self .forked_from_project = {"id" : self .fake .pyint ()}
25+
2326
2427class FakeGithubProject (FakeGitProject ):
25- def __init__ (self , pid , owner , name , url ):
28+ def __init__ (self , pid , owner , name , url , is_fork = False ):
2629 super ().__init__ (pid )
2730
2831 class FakeOwner :
@@ -33,12 +36,13 @@ def __init__(self, login):
3336 self .owner = FakeOwner (login )
3437 self .name = self .fake .word () if name is None else name
3538 self .svn_url = self .fake .url () if url is None else url
39+ self .fork = is_fork
3640
3741
3842def generate_project_list (pid = None , owner = None , name = None , url = None , ** kwargs ):
3943 return {
40- "gitlab" : [FakeGitlabProject (pid , owner , name , url )],
41- "github" : [FakeGithubProject (pid + 1 , owner , name , url )],
44+ "gitlab" : [FakeGitlabProject (pid , owner , name , url , ** kwargs )],
45+ "github" : [FakeGithubProject (pid + 1 , owner , name , url , ** kwargs )],
4246 }
4347
4448
@@ -92,3 +96,30 @@ def test_sync_moved_repo(repository):
9296 assert github_project .owner .login == repository .owner
9397 assert github_project .name == repository .name
9498 assert github_project .svn_url == repository .url
99+
100+
101+ def test_sync_skip_forks ():
102+ project_list = generate_project_list (pid = 1 , is_fork = True )
103+
104+ with patch (
105+ "gitlab.v4.objects.ProjectManager.list" , return_value = project_list ["gitlab" ]
106+ ), patch (
107+ "github.AuthenticatedUser.AuthenticatedUser.get_repos" ,
108+ return_value = project_list ["github" ],
109+ ), patch (
110+ "zoo.repos.tasks.settings.SYNC_REPOS_SKIP_FORKS" , True
111+ ):
112+ sync_repos ()
113+
114+ gitlab_project = project_list ["gitlab" ][0 ]
115+ github_project = project_list ["github" ][0 ]
116+
117+ with pytest .raises (Repository .DoesNotExist ):
118+ Repository .objects .get (
119+ remote_id = gitlab_project .id , provider = Provider .GITLAB .value
120+ )
121+
122+ with pytest .raises (Repository .DoesNotExist ):
123+ Repository .objects .get (
124+ remote_id = github_project .id , provider = Provider .GITHUB .value
125+ )
0 commit comments