3030import pytest
3131
3232import pygit2
33+ from pygit2 import Repository
3334from pygit2 .enums import FileStatus , MergeAnalysis , MergeFavor , MergeFileFlag , MergeFlag
3435
3536
3637@pytest .mark .parametrize ('id' , [None , 42 ])
37- def test_merge_invalid_type (mergerepo , id ) :
38+ def test_merge_invalid_type (mergerepo : Repository , id : None | int ) -> None :
3839 with pytest .raises (TypeError ):
39- mergerepo .merge (id )
40+ mergerepo .merge (id ) # type:ignore
4041
4142
4243# TODO: Once Repository.merge drops support for str arguments,
4344# add an extra parameter to test_merge_invalid_type above
4445# to make sure we cover legacy code.
45- def test_merge_string_argument_deprecated (mergerepo ) :
46+ def test_merge_string_argument_deprecated (mergerepo : Repository ) -> None :
4647 branch_head_hex = '5ebeeebb320790caf276b9fc8b24546d63316533'
4748
4849 with pytest .warns (DeprecationWarning , match = r'Pass Commit.+instead' ):
4950 mergerepo .merge (branch_head_hex )
5051
5152
52- def test_merge_analysis_uptodate (mergerepo ) :
53+ def test_merge_analysis_uptodate (mergerepo : Repository ) -> None :
5354 branch_head_hex = '5ebeeebb320790caf276b9fc8b24546d63316533'
54- branch_id = mergerepo . get ( branch_head_hex ) .id
55+ branch_id = mergerepo [ branch_head_hex ] .id
5556
5657 analysis , preference = mergerepo .merge_analysis (branch_id )
5758 assert analysis & MergeAnalysis .UP_TO_DATE
@@ -64,9 +65,9 @@ def test_merge_analysis_uptodate(mergerepo):
6465 assert {} == mergerepo .status ()
6566
6667
67- def test_merge_analysis_fastforward (mergerepo ) :
68+ def test_merge_analysis_fastforward (mergerepo : Repository ) -> None :
6869 branch_head_hex = 'e97b4cfd5db0fb4ebabf4f203979ca4e5d1c7c87'
69- branch_id = mergerepo . get ( branch_head_hex ) .id
70+ branch_id = mergerepo [ branch_head_hex ] .id
7071
7172 analysis , preference = mergerepo .merge_analysis (branch_id )
7273 assert not analysis & MergeAnalysis .UP_TO_DATE
@@ -79,9 +80,9 @@ def test_merge_analysis_fastforward(mergerepo):
7980 assert {} == mergerepo .status ()
8081
8182
82- def test_merge_no_fastforward_no_conflicts (mergerepo ) :
83+ def test_merge_no_fastforward_no_conflicts (mergerepo : Repository ) -> None :
8384 branch_head_hex = '03490f16b15a09913edb3a067a3dc67fbb8d41f1'
84- branch_id = mergerepo . get ( branch_head_hex ) .id
85+ branch_id = mergerepo [ branch_head_hex ] .id
8586 analysis , preference = mergerepo .merge_analysis (branch_id )
8687 assert not analysis & MergeAnalysis .UP_TO_DATE
8788 assert not analysis & MergeAnalysis .FASTFORWARD
@@ -90,7 +91,7 @@ def test_merge_no_fastforward_no_conflicts(mergerepo):
9091 assert {} == mergerepo .status ()
9192
9293
93- def test_merge_invalid_hex (mergerepo ) :
94+ def test_merge_invalid_hex (mergerepo : Repository ) -> None :
9495 branch_head_hex = '12345678'
9596 with (
9697 pytest .raises (KeyError ),
@@ -99,19 +100,19 @@ def test_merge_invalid_hex(mergerepo):
99100 mergerepo .merge (branch_head_hex )
100101
101102
102- def test_merge_already_something_in_index (mergerepo ) :
103+ def test_merge_already_something_in_index (mergerepo : Repository ) -> None :
103104 branch_head_hex = '03490f16b15a09913edb3a067a3dc67fbb8d41f1'
104- branch_oid = mergerepo . get ( branch_head_hex ) .id
105+ branch_oid = mergerepo [ branch_head_hex ] .id
105106 with (Path (mergerepo .workdir ) / 'inindex.txt' ).open ('w' ) as f :
106107 f .write ('new content' )
107108 mergerepo .index .add ('inindex.txt' )
108109 with pytest .raises (pygit2 .GitError ):
109110 mergerepo .merge (branch_oid )
110111
111112
112- def test_merge_no_fastforward_conflicts (mergerepo ) :
113+ def test_merge_no_fastforward_conflicts (mergerepo : Repository ) -> None :
113114 branch_head_hex = '1b2bae55ac95a4be3f8983b86cd579226d0eb247'
114- branch_id = mergerepo . get ( branch_head_hex ) .id
115+ branch_id = mergerepo [ branch_head_hex ] .id
115116
116117 analysis , preference = mergerepo .merge_analysis (branch_id )
117118 assert not analysis & MergeAnalysis .UP_TO_DATE
@@ -144,7 +145,7 @@ def test_merge_no_fastforward_conflicts(mergerepo):
144145 assert {'.gitignore' : FileStatus .INDEX_MODIFIED } == mergerepo .status ()
145146
146147
147- def test_merge_remove_conflicts (mergerepo ) :
148+ def test_merge_remove_conflicts (mergerepo : Repository ) -> None :
148149 other_branch_tip = pygit2 .Oid (hex = '1b2bae55ac95a4be3f8983b86cd579226d0eb247' )
149150 mergerepo .merge (other_branch_tip )
150151 idx = mergerepo .index
@@ -154,7 +155,7 @@ def test_merge_remove_conflicts(mergerepo):
154155 try :
155156 conflicts ['.gitignore' ]
156157 except KeyError :
157- mergerepo .fail ("conflicts['.gitignore'] raised KeyError unexpectedly" )
158+ mergerepo .fail ("conflicts['.gitignore'] raised KeyError unexpectedly" ) # type: ignore
158159 del idx .conflicts ['.gitignore' ]
159160 with pytest .raises (KeyError ):
160161 conflicts .__getitem__ ('.gitignore' )
@@ -170,14 +171,14 @@ def test_merge_remove_conflicts(mergerepo):
170171 MergeFavor .UNION ,
171172 ],
172173)
173- def test_merge_favor (mergerepo , favor ) :
174+ def test_merge_favor (mergerepo : Repository , favor : MergeFavor ) -> None :
174175 branch_head = pygit2 .Oid (hex = '1b2bae55ac95a4be3f8983b86cd579226d0eb247' )
175176 mergerepo .merge (branch_head , favor = favor )
176177
177178 assert mergerepo .index .conflicts is None
178179
179180
180- def test_merge_fail_on_conflict (mergerepo ) :
181+ def test_merge_fail_on_conflict (mergerepo : Repository ) -> None :
181182 branch_head = pygit2 .Oid (hex = '1b2bae55ac95a4be3f8983b86cd579226d0eb247' )
182183
183184 with pytest .raises (pygit2 .GitError , match = r'merge conflicts exist' ):
@@ -186,7 +187,7 @@ def test_merge_fail_on_conflict(mergerepo):
186187 )
187188
188189
189- def test_merge_commits (mergerepo ) :
190+ def test_merge_commits (mergerepo : Repository ) -> None :
190191 branch_head = pygit2 .Oid (hex = '03490f16b15a09913edb3a067a3dc67fbb8d41f1' )
191192
192193 merge_index = mergerepo .merge_commits (mergerepo .head .target , branch_head )
@@ -201,7 +202,7 @@ def test_merge_commits(mergerepo):
201202 assert merge_tree == merge_commits_tree
202203
203204
204- def test_merge_commits_favor (mergerepo ) :
205+ def test_merge_commits_favor (mergerepo : Repository ) -> None :
205206 branch_head = pygit2 .Oid (hex = '1b2bae55ac95a4be3f8983b86cd579226d0eb247' )
206207
207208 merge_index = mergerepo .merge_commits (
@@ -211,10 +212,10 @@ def test_merge_commits_favor(mergerepo):
211212
212213 # Incorrect favor value
213214 with pytest .raises (TypeError , match = r'favor argument must be MergeFavor' ):
214- mergerepo .merge_commits (mergerepo .head .target , branch_head , favor = 'foo' )
215+ mergerepo .merge_commits (mergerepo .head .target , branch_head , favor = 'foo' ) # type: ignore
215216
216217
217- def test_merge_trees (mergerepo ) :
218+ def test_merge_trees (mergerepo : Repository ) -> None :
218219 branch_id = pygit2 .Oid (hex = '03490f16b15a09913edb3a067a3dc67fbb8d41f1' )
219220 ancestor_id = mergerepo .merge_base (mergerepo .head .target , branch_id )
220221
@@ -230,7 +231,7 @@ def test_merge_trees(mergerepo):
230231 assert merge_tree == merge_commits_tree
231232
232233
233- def test_merge_trees_favor (mergerepo ) :
234+ def test_merge_trees_favor (mergerepo : Repository ) -> None :
234235 branch_head_hex = '1b2bae55ac95a4be3f8983b86cd579226d0eb247'
235236 ancestor_id = mergerepo .merge_base (mergerepo .head .target , branch_head_hex )
236237 merge_index = mergerepo .merge_trees (
@@ -240,14 +241,19 @@ def test_merge_trees_favor(mergerepo):
240241
241242 with pytest .raises (TypeError ):
242243 mergerepo .merge_trees (
243- ancestor_id , mergerepo .head .target , branch_head_hex , favor = 'foo'
244+ ancestor_id ,
245+ mergerepo .head .target ,
246+ branch_head_hex ,
247+ favor = 'foo' , # type: ignore
244248 )
245249
246250
247- def test_merge_options ():
251+ def test_merge_options () -> None :
248252 favor = MergeFavor .OURS
249- flags = MergeFlag .FIND_RENAMES | MergeFlag .FAIL_ON_CONFLICT
250- file_flags = MergeFileFlag .IGNORE_WHITESPACE | MergeFileFlag .DIFF_PATIENCE
253+ flags : int | MergeFlag = MergeFlag .FIND_RENAMES | MergeFlag .FAIL_ON_CONFLICT
254+ file_flags : int | MergeFileFlag = (
255+ MergeFileFlag .IGNORE_WHITESPACE | MergeFileFlag .DIFF_PATIENCE
256+ )
251257 o1 = pygit2 .Repository ._merge_options (
252258 favor = favor , flags = flags , file_flags = file_flags
253259 )
@@ -280,9 +286,9 @@ def test_merge_options():
280286 assert file_flags == o1 .file_flags
281287
282288
283- def test_merge_many (mergerepo ) :
289+ def test_merge_many (mergerepo : Repository ) -> None :
284290 branch_head_hex = '03490f16b15a09913edb3a067a3dc67fbb8d41f1'
285- branch_id = mergerepo . get ( branch_head_hex ) .id
291+ branch_id = mergerepo [ branch_head_hex ] .id
286292 ancestor_id = mergerepo .merge_base_many ([mergerepo .head .target , branch_id ])
287293
288294 merge_index = mergerepo .merge_trees (
@@ -299,9 +305,9 @@ def test_merge_many(mergerepo):
299305 assert merge_tree == merge_commits_tree
300306
301307
302- def test_merge_octopus (mergerepo ) :
308+ def test_merge_octopus (mergerepo : Repository ) -> None :
303309 branch_head_hex = '03490f16b15a09913edb3a067a3dc67fbb8d41f1'
304- branch_id = mergerepo . get ( branch_head_hex ) .id
310+ branch_id = mergerepo [ branch_head_hex ] .id
305311 ancestor_id = mergerepo .merge_base_octopus ([mergerepo .head .target , branch_id ])
306312
307313 merge_index = mergerepo .merge_trees (
@@ -318,7 +324,7 @@ def test_merge_octopus(mergerepo):
318324 assert merge_tree == merge_commits_tree
319325
320326
321- def test_merge_mergeheads (mergerepo ) :
327+ def test_merge_mergeheads (mergerepo : Repository ) -> None :
322328 assert mergerepo .listall_mergeheads () == []
323329
324330 branch_head = pygit2 .Oid (hex = '1b2bae55ac95a4be3f8983b86cd579226d0eb247' )
@@ -332,7 +338,7 @@ def test_merge_mergeheads(mergerepo):
332338 )
333339
334340
335- def test_merge_message (mergerepo ) :
341+ def test_merge_message (mergerepo : Repository ) -> None :
336342 assert not mergerepo .message
337343 assert not mergerepo .raw_message
338344
@@ -346,7 +352,7 @@ def test_merge_message(mergerepo):
346352 assert not mergerepo .message
347353
348354
349- def test_merge_remove_message (mergerepo ) :
355+ def test_merge_remove_message (mergerepo : Repository ) -> None :
350356 branch_head = pygit2 .Oid (hex = '1b2bae55ac95a4be3f8983b86cd579226d0eb247' )
351357 mergerepo .merge (branch_head )
352358
@@ -355,7 +361,7 @@ def test_merge_remove_message(mergerepo):
355361 assert not mergerepo .message
356362
357363
358- def test_merge_commit (mergerepo ) :
364+ def test_merge_commit (mergerepo : Repository ) -> None :
359365 commit = mergerepo ['1b2bae55ac95a4be3f8983b86cd579226d0eb247' ]
360366 assert isinstance (commit , pygit2 .Commit )
361367 mergerepo .merge (commit )
@@ -364,7 +370,7 @@ def test_merge_commit(mergerepo):
364370 assert mergerepo .listall_mergeheads () == [commit .id ]
365371
366372
367- def test_merge_reference (mergerepo ) :
373+ def test_merge_reference (mergerepo : Repository ) -> None :
368374 branch = mergerepo .branches .local ['branch-conflicts' ]
369375 branch_head_hex = '1b2bae55ac95a4be3f8983b86cd579226d0eb247'
370376 mergerepo .merge (branch )
0 commit comments