Skip to content

Commit 928c846

Browse files
committed
patchwork: remove @Property from Subject getters
Using @Property and async on the same function is confusing and makes mocking for unit tests difficult and sometimes impossible. Remove @Property decorator from Subject getters and make them simple async functions. Fix usages accordingly. Signed-off-by: Ihor Solodrai <[email protected]>
1 parent 462b933 commit 928c846

File tree

5 files changed

+16
-16
lines changed

5 files changed

+16
-16
lines changed

kernel_patches_daemon/branch_worker.py

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1100,7 +1100,8 @@ def filter_closed_pr(self, head: str) -> Optional[PullRequest]:
11001100
return res
11011101

11021102
async def subject_to_branch(self, subject: Subject) -> str:
1103-
return f"{await subject.branch}{SERIES_TARGET_SEPARATOR}{self.repo_branch}"
1103+
subj_branch = await subject.branch()
1104+
return f"{subj_branch}{SERIES_TARGET_SEPARATOR}{self.repo_branch}"
11041105

11051106
async def sync_checks(self, pr: PullRequest, series: Series) -> None:
11061107
# Make sure that we are working with up-to-date data (as opposed to

kernel_patches_daemon/github_sync.py

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -199,7 +199,7 @@ async def sync_relevant_subject(self, subject: Subject) -> None:
199199
4. Start from first branch, try to apply and generate PR,
200200
if fails continue to next branch, if no more branches, generate a merge-conflict PR
201201
"""
202-
series = none_throws(await subject.latest_series)
202+
series = none_throws(await subject.latest_series())
203203
tags = await series.all_tags()
204204
logging.info(f"Processing {series.id}: {subject.subject} (tags: {tags})")
205205

@@ -303,8 +303,8 @@ async def sync_patches(self) -> None:
303303
f"Renaming {pr} from {subject_name} to {subject.subject} according to {series.id}"
304304
)
305305
pr.edit(title=subject.subject)
306-
branch_name = f"{await subject.branch}{SERIES_TARGET_SEPARATOR}{worker.repo_branch}"
307-
latest_series = await subject.latest_series or series
306+
branch_name = await worker.subject_to_branch(subject)
307+
latest_series = await subject.latest_series() or series
308308
pr = await self.checkout_and_patch_safe(
309309
worker, branch_name, latest_series
310310
)

kernel_patches_daemon/patchwork.py

Lines changed: 3 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -289,21 +289,18 @@ def __init__(self, subject: str, pw_client: "Patchwork") -> None:
289289
self.pw_client = pw_client
290290
self.subject = subject
291291

292-
@property
293292
async def branch(self) -> Optional[str]:
294-
relevant_series = await self.relevant_series
293+
relevant_series = await self.relevant_series()
295294
if len(relevant_series) == 0:
296295
return None
297296
return f"series{SERIES_ID_SEPARATOR}{relevant_series[0].id}"
298297

299-
@property
300298
async def latest_series(self) -> Optional["Series"]:
301-
relevant_series = await self.relevant_series
299+
relevant_series = await self.relevant_series()
302300
if len(relevant_series) == 0:
303301
return None
304302
return relevant_series[-1]
305303

306-
@property
307304
@cached(cache=TTLCache(maxsize=1, ttl=600))
308305
async def relevant_series(self) -> List["Series"]:
309306
"""
@@ -768,7 +765,7 @@ async def get_relevant_subjects(self) -> Sequence[Subject]:
768765
async def fetch_latest_series(
769766
subject_name, subject_obj
770767
) -> Tuple[str, Series, Optional[Series]]:
771-
return (subject_name, subject_obj, await subject_obj.latest_series)
768+
return (subject_name, subject_obj, await subject_obj.latest_series())
772769

773770
tasks = [fetch_latest_series(k, v) for k, v in subjects.items()]
774771
tasks = await asyncio.gather(*tasks)

tests/test_github_sync.py

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -186,7 +186,7 @@ def _setup_sync_relevant_subject_mocks(self):
186186
series_mock.all_tags = AsyncMock(return_value=["tag"])
187187
subject_mock = MagicMock()
188188
subject_mock.subject = "Test subject"
189-
subject_mock.latest_series = AsyncMock(return_value=series_mock)()
189+
subject_mock.latest_series = AsyncMock(return_value=series_mock)
190190

191191
return subject_mock, series_mock
192192

@@ -206,7 +206,7 @@ async def test_sync_relevant_subject_success_first_branch(self) -> None:
206206

207207
subject_mock, series_mock = self._setup_sync_relevant_subject_mocks()
208208
series_mock.all_tags = AsyncMock(return_value=["multibranch-tag"])
209-
subject_mock.branch = AsyncMock(return_value=series_prefix)()
209+
subject_mock.branch = AsyncMock(return_value=series_prefix)
210210

211211
pr_mock = MagicMock()
212212
pr_mock.head.ref = series_branch_name

tests/test_patchwork.py

Lines changed: 6 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -636,11 +636,13 @@ async def test_relevant_series(self, m: aioresponses) -> None:
636636
init_pw_responses(m, DEFAULT_TEST_RESPONSES)
637637

638638
s = Subject("foo", self._pw)
639+
639640
# There is 2 relevant series
640-
self.assertEqual(len(await s.relevant_series), 4)
641+
relevant_series = await s.relevant_series()
642+
self.assertEqual(len(relevant_series), 4)
641643

642644
# Series are ordered from oldest to newest
643-
series = (await s.relevant_series)[0]
645+
series = relevant_series[0]
644646
self.assertEqual(series.id, FOO_SERIES_FIRST)
645647
# It has only 1 diff, diff 11
646648
self.assertEqual(len(await series.get_patches()), 1)
@@ -655,7 +657,7 @@ async def test_latest_series(self, m: aioresponses) -> None:
655657
init_pw_responses(m, DEFAULT_TEST_RESPONSES)
656658

657659
s = Subject("foo", self._pw)
658-
latest_series = none_throws(await s.latest_series)
660+
latest_series = none_throws(await s.latest_series())
659661
# It is Series with ID FOO_SERIES_LAST
660662
self.assertEqual(latest_series.id, FOO_SERIES_LAST)
661663
# and has 3 diffs
@@ -670,6 +672,6 @@ async def test_branch_name(self, m: aioresponses) -> None:
670672
init_pw_responses(m, DEFAULT_TEST_RESPONSES)
671673

672674
s = Subject("foo", self._pw)
673-
branch = await s.branch
675+
branch = await s.branch()
674676
# It is Series with ID 4
675677
self.assertEqual(branch, f"series/{FOO_SERIES_FIRST}")

0 commit comments

Comments
 (0)