Skip to content

Commit 6131e43

Browse files
committed
rework: make set_milestones more testable
1 parent 89c6717 commit 6131e43

File tree

1 file changed

+23
-1
lines changed

1 file changed

+23
-1
lines changed

riot_release_manager.py

Lines changed: 23 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -123,10 +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-
return [int(line) for line in re.findall(r"Merge pull request #([0-9]+) from", log)]
150+
return _merge_commits_to_prs(log)
151+
130152

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

0 commit comments

Comments
 (0)