11"""Tests for IdentifyTargetRef behaviour."""
22
33import asyncio
4- from typing import List , Optional
4+ from typing import Any , List
55from unittest .mock import AsyncMock , MagicMock
66
77import pytest
@@ -70,10 +70,7 @@ async def test_identify_target_ref_exact_match(
7070 # Mock branch listing
7171 branches = ["release/7.2" , "release/8.0" , "release/8.2" , "release/8.4" ]
7272
73- async def mock_list_branches (repo : str , pattern : Optional [str ] = None ) -> List [str ]:
74- return branches
75-
76- github_client .list_remote_branches = AsyncMock (side_effect = mock_list_branches )
73+ github_client .list_remote_branches = AsyncMock (return_value = branches )
7774
7875 behaviour = IdentifyTargetRef (
7976 "Test Identify Ref" ,
@@ -105,10 +102,7 @@ async def test_identify_target_ref_lower_version(
105102 # Mock branch listing - no release/8.3 branch
106103 branches = ["release/7.2" , "release/8.0" , "release/8.2" , "release/8.4" ]
107104
108- async def mock_list_branches (repo : str , pattern : Optional [str ] = None ) -> list [str ]:
109- return branches
110-
111- github_client .list_remote_branches = AsyncMock (side_effect = mock_list_branches )
105+ github_client .list_remote_branches = AsyncMock (return_value = branches )
112106
113107 behaviour = IdentifyTargetRef (
114108 "Test Identify Ref" ,
@@ -131,18 +125,15 @@ async def mock_list_branches(repo: str, pattern: Optional[str] = None) -> list[s
131125
132126@pytest .mark .asyncio
133127async def test_identify_target_ref_milestone_version (
134- github_client , package_meta , release_meta
135- ):
128+ github_client : MagicMock , package_meta : PackageMeta , release_meta : ReleaseMeta
129+ ) -> None :
136130 """Test identifying target ref for milestone version."""
137131 release_meta .tag = "8.4-m01"
138132
139133 # Mock branch listing
140134 branches = ["release/7.2" , "release/8.0" , "release/8.2" , "release/8.4" ]
141135
142- async def mock_list_branches (repo , pattern = None ):
143- return branches
144-
145- github_client .list_remote_branches = AsyncMock (side_effect = mock_list_branches )
136+ github_client .list_remote_branches = AsyncMock (return_value = branches )
146137
147138 behaviour = IdentifyTargetRef (
148139 "Test Identify Ref" ,
@@ -165,18 +156,15 @@ async def mock_list_branches(repo, pattern=None):
165156
166157@pytest .mark .asyncio
167158async def test_identify_target_ref_no_suitable_branch (
168- github_client , package_meta , release_meta
169- ):
159+ github_client : MagicMock , package_meta : PackageMeta , release_meta : ReleaseMeta
160+ ) -> None :
170161 """Test when no suitable branch is found (version too old)."""
171162 release_meta .tag = "7.0.0"
172163
173164 # Mock branch listing - all branches are newer
174165 branches = ["release/7.2" , "release/8.0" , "release/8.2" , "release/8.4" ]
175166
176- async def mock_list_branches (repo , pattern = None ):
177- return branches
178-
179- github_client .list_remote_branches = AsyncMock (side_effect = mock_list_branches )
167+ github_client .list_remote_branches = AsyncMock (return_value = branches )
180168
181169 behaviour = IdentifyTargetRef (
182170 "Test Identify Ref" ,
@@ -200,16 +188,13 @@ async def mock_list_branches(repo, pattern=None):
200188
201189@pytest .mark .asyncio
202190async def test_identify_target_ref_no_release_branches (
203- github_client , package_meta , release_meta
204- ):
191+ github_client : MagicMock , package_meta : PackageMeta , release_meta : ReleaseMeta
192+ ) -> None :
205193 """Test when no release branches match the pattern."""
206194 # Mock branch listing - no release branches
207195 branches = ["main" , "develop" , "feature/test" ]
208196
209- async def mock_list_branches (repo , pattern = None ):
210- return branches
211-
212- github_client .list_remote_branches = AsyncMock (side_effect = mock_list_branches )
197+ github_client .list_remote_branches = AsyncMock (return_value = branches )
213198
214199 behaviour = IdentifyTargetRef (
215200 "Test Identify Ref" ,
@@ -232,8 +217,8 @@ async def mock_list_branches(repo, pattern=None):
232217
233218@pytest .mark .asyncio
234219async def test_identify_target_ref_invalid_tag (
235- github_client , package_meta , release_meta
236- ):
220+ github_client : MagicMock , package_meta : PackageMeta , release_meta : ReleaseMeta
221+ ) -> None :
237222 """Test with invalid release tag."""
238223 release_meta .tag = "invalid-tag"
239224
@@ -253,7 +238,9 @@ async def test_identify_target_ref_invalid_tag(
253238
254239
255240@pytest .mark .asyncio
256- async def test_identify_target_ref_no_tag (github_client , package_meta , release_meta ):
241+ async def test_identify_target_ref_no_tag (
242+ github_client : MagicMock , package_meta : PackageMeta , release_meta : ReleaseMeta
243+ ) -> None :
257244 """Test when release tag is not set."""
258245 release_meta .tag = None
259246
@@ -273,17 +260,16 @@ async def test_identify_target_ref_no_tag(github_client, package_meta, release_m
273260
274261
275262@pytest .mark .asyncio
276- async def test_detect_branch_sorting (github_client , package_meta , release_meta ):
263+ async def test_detect_branch_sorting (
264+ github_client : MagicMock , package_meta : PackageMeta , release_meta : ReleaseMeta
265+ ) -> None :
277266 """Test that branches are sorted correctly and highest suitable version is selected."""
278267 release_meta .tag = "8.5.0"
279268
280269 # Mock branch listing - unsorted
281270 branches = ["release/8.0" , "release/8.4" , "release/7.2" , "release/8.2" ]
282271
283- async def mock_list_branches (repo , pattern = None ):
284- return branches
285-
286- github_client .list_remote_branches = AsyncMock (side_effect = mock_list_branches )
272+ github_client .list_remote_branches = AsyncMock (return_value = branches )
287273
288274 behaviour = IdentifyTargetRef (
289275 "Test Identify Ref" ,
@@ -306,13 +292,13 @@ async def mock_list_branches(repo, pattern=None):
306292
307293@pytest .mark .asyncio
308294async def test_identify_target_ref_running_state (
309- github_client , package_meta , release_meta
310- ):
295+ github_client : MagicMock , package_meta : PackageMeta , release_meta : ReleaseMeta
296+ ) -> None :
311297 """Test that behaviour returns RUNNING while task is not complete."""
312298 # Create a future that won't complete immediately
313- future = asyncio .Future ()
299+ future : asyncio . Future [ None ] = asyncio .Future ()
314300
315- async def mock_list_branches (repo , pattern = None ) :
301+ async def mock_list_branches (* args : Any , ** kwargs : Any ) -> List [ str ] :
316302 await future
317303 return ["release/8.2" ]
318304
0 commit comments