Skip to content

Commit da8dd15

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 c63c3ab commit da8dd15

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
@@ -1082,7 +1082,8 @@ def filter_closed_pr(self, head: str) -> Optional[PullRequest]:
10821082
return res
10831083

10841084
async def subject_to_branch(self, subject: Subject) -> str:
1085-
return f"{await subject.branch}{HEAD_BASE_SEPARATOR}{self.repo_branch}"
1085+
subj_branch = await subject.branch()
1086+
return f"{subj_branch}{HEAD_BASE_SEPARATOR}{self.repo_branch}"
10861087

10871088
async def sync_checks(self, pr: PullRequest, series: Series) -> None:
10881089
# 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
@@ -195,7 +195,7 @@ async def sync_relevant_subject(self, subject: Subject) -> None:
195195
4. Start from first branch, try to apply and generate PR,
196196
if fails continue to next branch, if no more branches, generate a merge-conflict PR
197197
"""
198-
series = none_throws(await subject.latest_series)
198+
series = none_throws(await subject.latest_series())
199199
tags = await series.all_tags()
200200
logging.info(f"Processing {series.id}: {subject.subject} (tags: {tags})")
201201

@@ -298,8 +298,8 @@ async def sync_patches(self) -> None:
298298
f"Renaming {pr} from {subject_name} to {subject.subject} according to {series.id}"
299299
)
300300
pr.edit(title=subject.subject)
301-
branch_name = f"{await subject.branch}{HEAD_BASE_SEPARATOR}{worker.repo_branch}"
302-
latest_series = await subject.latest_series or series
301+
branch_name = await worker.subject_to_branch(subject)
302+
latest_series = await subject.latest_series() or series
303303
pr = await self.checkout_and_patch_safe(
304304
worker, branch_name, latest_series
305305
)

kernel_patches_daemon/patchwork.py

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

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

298-
@property
299297
async def latest_series(self) -> Optional["Series"]:
300-
relevant_series = await self.relevant_series
298+
relevant_series = await self.relevant_series()
301299
if len(relevant_series) == 0:
302300
return None
303301
return relevant_series[-1]
304302

305-
@property
306303
@cached(cache=TTLCache(maxsize=1, ttl=600))
307304
async def relevant_series(self) -> List["Series"]:
308305
"""
@@ -767,7 +764,7 @@ async def get_relevant_subjects(self) -> Sequence[Subject]:
767764
async def fetch_latest_series(
768765
subject_name, subject_obj
769766
) -> Tuple[str, Series, Optional[Series]]:
770-
return (subject_name, subject_obj, await subject_obj.latest_series)
767+
return (subject_name, subject_obj, await subject_obj.latest_series())
771768

772769
tasks = [fetch_latest_series(k, v) for k, v in subjects.items()]
773770
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)