Skip to content

Commit 6a89050

Browse files
committed
rework: make set_milestones more testable
1 parent 2e21fc4 commit 6a89050

File tree

1 file changed

+23
-2
lines changed

1 file changed

+23
-2
lines changed

riot_release_manager.py

Lines changed: 23 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -123,11 +123,32 @@ def update_branch(repo_dir, remote, branch):
123123
stderr=subprocess.DEVNULL
124124
)
125125

126+
127+
def _merge_commits_to_prs(log: str):
128+
"""Extracts PR numbers from merge commits in a git log.
129+
130+
Args:
131+
log: git log
132+
133+
Returns:
134+
list of PR numbers
135+
136+
>>> log = 'Merge #19495\\n'
137+
>>> log += 'drivers/lsm303agr: Rename deprecated unit G to GForce\\n'
138+
>>> log += 'Merge #19499 #19500\\n'
139+
>>> log += 'sam0/usbdev: partial revert of #17086\\n'
140+
>>> prs = _merge_commits_to_prs(log)
141+
>>> assert prs == [19495, 19499, 19500]
142+
"""
143+
merge_lines = [line for line in log.splitlines() if line.strip().startswith('Merge #')]
144+
return [int(line) for line in re.findall(r"#([0-9]+)", '\n'.join(merge_lines))]
145+
146+
126147
def get_merged_prs_with_git(repo_dir, since):
127148
log = subprocess.run(git(repo_dir) + ["log", "--merges", "%s..HEAD" % since],
128149
capture_output=True, text=True).stdout
129-
merge_lines = [line for line in log.splitlines() if line.strip().startswith('Merge #')]
130-
return [int(line) for line in re.findall(r"#([0-9]+)", '\n'.join(merge_lines))]
150+
return _merge_commits_to_prs(log)
151+
131152

132153
def get_tags(repo_dir, remote):
133154
subprocess.run(git(repo_dir) + ["fetch", "--tags", remote])

0 commit comments

Comments
 (0)