@@ -39,6 +39,16 @@ def test_merge_invalid_type(mergerepo, id):
3939 mergerepo .merge (id )
4040
4141
42+ # TODO: Once Repository.merge drops support for str arguments,
43+ # add an extra parameter to test_merge_invalid_type above
44+ # to make sure we cover legacy code.
45+ def test_merge_string_argument_deprecated (mergerepo ):
46+ branch_head_hex = '5ebeeebb320790caf276b9fc8b24546d63316533'
47+
48+ with pytest .warns (DeprecationWarning , match = r'Pass Commit.+instead' ):
49+ mergerepo .merge (branch_head_hex )
50+
51+
4252def test_merge_analysis_uptodate (mergerepo ):
4353 branch_head_hex = '5ebeeebb320790caf276b9fc8b24546d63316533'
4454 branch_id = mergerepo .get (branch_head_hex ).id
@@ -82,7 +92,10 @@ def test_merge_no_fastforward_no_conflicts(mergerepo):
8292
8393def test_merge_invalid_hex (mergerepo ):
8494 branch_head_hex = '12345678'
85- with pytest .raises (KeyError ):
95+ with (
96+ pytest .raises (KeyError ),
97+ pytest .warns (DeprecationWarning , match = r'Pass Commit.+instead' ),
98+ ):
8699 mergerepo .merge (branch_head_hex )
87100
88101
@@ -132,7 +145,7 @@ def test_merge_no_fastforward_conflicts(mergerepo):
132145
133146
134147def test_merge_remove_conflicts (mergerepo ):
135- other_branch_tip = '1b2bae55ac95a4be3f8983b86cd579226d0eb247'
148+ other_branch_tip = pygit2 . Oid ( hex = '1b2bae55ac95a4be3f8983b86cd579226d0eb247' )
136149 mergerepo .merge (other_branch_tip )
137150 idx = mergerepo .index
138151 conflicts = idx .conflicts
@@ -158,30 +171,29 @@ def test_merge_remove_conflicts(mergerepo):
158171 ],
159172)
160173def test_merge_favor (mergerepo , favor ):
161- branch_head_hex = '1b2bae55ac95a4be3f8983b86cd579226d0eb247'
162- mergerepo .merge (branch_head_hex , favor = favor )
174+ branch_head = pygit2 . Oid ( hex = '1b2bae55ac95a4be3f8983b86cd579226d0eb247' )
175+ mergerepo .merge (branch_head , favor = favor )
163176
164177 assert mergerepo .index .conflicts is None
165178
166179
167180def test_merge_fail_on_conflict (mergerepo ):
168- branch_head_hex = '1b2bae55ac95a4be3f8983b86cd579226d0eb247'
181+ branch_head = pygit2 . Oid ( hex = '1b2bae55ac95a4be3f8983b86cd579226d0eb247' )
169182
170- with pytest .raises (pygit2 .GitError ):
183+ with pytest .raises (pygit2 .GitError , match = r'merge conflicts exist' ):
171184 mergerepo .merge (
172- branch_head_hex , flags = MergeFlag .FIND_RENAMES | MergeFlag .FAIL_ON_CONFLICT
185+ branch_head , flags = MergeFlag .FIND_RENAMES | MergeFlag .FAIL_ON_CONFLICT
173186 )
174187
175188
176189def test_merge_commits (mergerepo ):
177- branch_head_hex = '03490f16b15a09913edb3a067a3dc67fbb8d41f1'
178- branch_id = mergerepo .get (branch_head_hex ).id
190+ branch_head = pygit2 .Oid (hex = '03490f16b15a09913edb3a067a3dc67fbb8d41f1' )
179191
180- merge_index = mergerepo .merge_commits (mergerepo .head .target , branch_head_hex )
192+ merge_index = mergerepo .merge_commits (mergerepo .head .target , branch_head )
181193 assert merge_index .conflicts is None
182194 merge_commits_tree = merge_index .write_tree (mergerepo )
183195
184- mergerepo .merge (branch_id )
196+ mergerepo .merge (branch_head )
185197 index = mergerepo .index
186198 assert index .conflicts is None
187199 merge_tree = index .write_tree ()
@@ -190,26 +202,23 @@ def test_merge_commits(mergerepo):
190202
191203
192204def test_merge_commits_favor (mergerepo ):
193- branch_head_hex = '1b2bae55ac95a4be3f8983b86cd579226d0eb247'
205+ branch_head = pygit2 . Oid ( hex = '1b2bae55ac95a4be3f8983b86cd579226d0eb247' )
194206
195207 merge_index = mergerepo .merge_commits (
196- mergerepo .head .target , branch_head_hex , favor = MergeFavor .OURS
208+ mergerepo .head .target , branch_head , favor = MergeFavor .OURS
197209 )
198210 assert merge_index .conflicts is None
199211
200212 # Incorrect favor value
201- with pytest .raises (TypeError ):
202- mergerepo .merge_commits (mergerepo .head .target , branch_head_hex , favor = 'foo' )
213+ with pytest .raises (TypeError , match = r'favor argument must be MergeFavor' ):
214+ mergerepo .merge_commits (mergerepo .head .target , branch_head , favor = 'foo' )
203215
204216
205217def test_merge_trees (mergerepo ):
206- branch_head_hex = '03490f16b15a09913edb3a067a3dc67fbb8d41f1'
207- branch_id = mergerepo .get (branch_head_hex ).id
218+ branch_id = pygit2 .Oid (hex = '03490f16b15a09913edb3a067a3dc67fbb8d41f1' )
208219 ancestor_id = mergerepo .merge_base (mergerepo .head .target , branch_id )
209220
210- merge_index = mergerepo .merge_trees (
211- ancestor_id , mergerepo .head .target , branch_head_hex
212- )
221+ merge_index = mergerepo .merge_trees (ancestor_id , mergerepo .head .target , branch_id )
213222 assert merge_index .conflicts is None
214223 merge_commits_tree = merge_index .write_tree (mergerepo )
215224
@@ -312,10 +321,10 @@ def test_merge_octopus(mergerepo):
312321def test_merge_mergeheads (mergerepo ):
313322 assert mergerepo .listall_mergeheads () == []
314323
315- branch_head_hex = '1b2bae55ac95a4be3f8983b86cd579226d0eb247'
316- mergerepo .merge (branch_head_hex )
324+ branch_head = pygit2 . Oid ( hex = '1b2bae55ac95a4be3f8983b86cd579226d0eb247' )
325+ mergerepo .merge (branch_head )
317326
318- assert mergerepo .listall_mergeheads () == [pygit2 . Oid ( hex = branch_head_hex ) ]
327+ assert mergerepo .listall_mergeheads () == [branch_head ]
319328
320329 mergerepo .state_cleanup ()
321330 assert mergerepo .listall_mergeheads () == [], (
@@ -327,27 +336,28 @@ def test_merge_message(mergerepo):
327336 assert not mergerepo .message
328337 assert not mergerepo .raw_message
329338
330- branch_head_hex = '1b2bae55ac95a4be3f8983b86cd579226d0eb247'
331- mergerepo .merge (branch_head_hex )
339+ branch_head = pygit2 . Oid ( hex = '1b2bae55ac95a4be3f8983b86cd579226d0eb247' )
340+ mergerepo .merge (branch_head )
332341
333- assert mergerepo .message .startswith (f"Merge commit '{ branch_head_hex } '" )
342+ assert mergerepo .message .startswith (f"Merge commit '{ branch_head } '" )
334343 assert mergerepo .message .encode ('utf-8' ) == mergerepo .raw_message
335344
336345 mergerepo .state_cleanup ()
337346 assert not mergerepo .message
338347
339348
340349def test_merge_remove_message (mergerepo ):
341- branch_head_hex = '1b2bae55ac95a4be3f8983b86cd579226d0eb247'
342- mergerepo .merge (branch_head_hex )
350+ branch_head = pygit2 . Oid ( hex = '1b2bae55ac95a4be3f8983b86cd579226d0eb247' )
351+ mergerepo .merge (branch_head )
343352
344- assert mergerepo .message .startswith (f"Merge commit '{ branch_head_hex } '" )
353+ assert mergerepo .message .startswith (f"Merge commit '{ branch_head } '" )
345354 mergerepo .remove_message ()
346355 assert not mergerepo .message
347356
348357
349358def test_merge_commit (mergerepo ):
350359 commit = mergerepo ['1b2bae55ac95a4be3f8983b86cd579226d0eb247' ]
360+ assert isinstance (commit , pygit2 .Commit )
351361 mergerepo .merge (commit )
352362
353363 assert mergerepo .message .startswith (f"Merge commit '{ str (commit .id )} '" )
0 commit comments