@@ -103,3 +103,41 @@ def test_fetch_tags(repository, mocker):
103103 check = True ,
104104 ),
105105 ]
106+
107+
108+ def test_get_merge_base (repository ):
109+ repo = Repository (repository .path .name , str (repository .path ))
110+ base_commit = repo .git .latest_commit ()
111+ repo .git .capture ('checkout' , '-b' , 'test_merge_base' )
112+
113+ (repo .path / 'test1.txt' ).touch ()
114+ repo .git .capture ('add' , '.' )
115+ repo .git .capture ('commit' , '-m' , 'test1' )
116+
117+ base = repo .git .merge_base ('origin/master' )
118+
119+ assert base == base_commit .sha
120+
121+
122+ def test_get_merge_base_two_branches (repository ):
123+ repo = Repository (repository .path .name , str (repository .path ))
124+ base_commit = repo .git .latest_commit ()
125+
126+ repo .git .capture ('checkout' , '-b' , 'test1_merge_base' )
127+
128+ (repo .path / 'test1.txt' ).touch ()
129+ repo .git .capture ('add' , '.' )
130+ repo .git .capture ('commit' , '-m' , 'test1' )
131+
132+ repo .git .capture ('branch' , 'test2_merge_base' )
133+
134+ (repo .path / 'test1_1.txt' ).touch ()
135+ repo .git .capture ('add' , '.' )
136+ repo .git .capture ('commit' , '-m' , 'test1_1' )
137+
138+ repo .git .capture ('checkout' , 'test2_merge_base' )
139+ (repo .path / 'test2_1.txt' ).touch ()
140+ repo .git .capture ('add' , '.' )
141+ repo .git .capture ('commit' , '-m' , 'test2' )
142+ base = repo .git .merge_base ('origin/master' )
143+ assert base == base_commit .sha
0 commit comments