Skip to content

Commit b825604

Browse files
Fix automatic generation of changelog entries with markdown backticks
Co-authored-by: saulshanabrook <[email protected]>
1 parent 3fff0c9 commit b825604

File tree

2 files changed

+100
-1
lines changed

2 files changed

+100
-1
lines changed

.github/workflows/update-changelog.yml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -31,7 +31,7 @@ jobs:
3131
run: |
3232
python modify_changelog.py update_changelog \
3333
"${{ github.event.pull_request.number }}" \
34-
"${{ github.event.pull_request.title }}"
34+
'${{ github.event.pull_request.title }}'
3535
3636
- name: Check for changes
3737
id: changes

python/tests/test_modify_changelog.py

Lines changed: 99 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -295,3 +295,102 @@ def test_custom_changelog_path():
295295
# Check changelog was updated
296296
updated_changelog = custom_changelog_path.read_text()
297297
assert "- Add new feature [#456](https://github.com/egraphs-good/egglog-python/pull/456)" in updated_changelog
298+
299+
300+
def test_update_changelog_with_markdown_backticks():
301+
"""Test that PR titles with markdown backticks are preserved correctly."""
302+
with tempfile.TemporaryDirectory() as temp_dir:
303+
temp_path = Path(temp_dir)
304+
305+
# Create mock changelog
306+
changelog_content = """# Changelog
307+
308+
## UNRELEASED
309+
310+
## 1.2.3 (2024-01-01)
311+
312+
- Some old change
313+
"""
314+
docs_dir = temp_path / "docs"
315+
docs_dir.mkdir()
316+
changelog_path = docs_dir / "changelog.md"
317+
changelog_path.write_text(changelog_content)
318+
319+
# Test with title containing markdown backticks
320+
pr_title_with_backticks = "Support methods like `__array_function__` on expressions"
321+
322+
# Run the script
323+
result = subprocess.run(
324+
[
325+
sys.executable,
326+
str(Path(__file__).parent.parent.parent / "modify_changelog.py"),
327+
"update_changelog",
328+
"315",
329+
pr_title_with_backticks,
330+
],
331+
capture_output=True,
332+
text=True,
333+
cwd=temp_path,
334+
check=False,
335+
)
336+
337+
assert result.returncode == 0
338+
assert f"Added changelog entry for PR #315: {pr_title_with_backticks}" in result.stdout
339+
340+
# Check that backticks are preserved in the changelog
341+
updated_changelog = changelog_path.read_text()
342+
expected_entry = f"- {pr_title_with_backticks} [#315](https://github.com/egraphs-good/egglog-python/pull/315)"
343+
assert expected_entry in updated_changelog
344+
345+
# Specifically check that the backticks around __array_function__ are preserved
346+
assert "`__array_function__`" in updated_changelog
347+
348+
349+
def test_update_changelog_multiple_backticks():
350+
"""Test that PR titles with multiple markdown elements are preserved correctly."""
351+
with tempfile.TemporaryDirectory() as temp_dir:
352+
temp_path = Path(temp_dir)
353+
354+
# Create mock changelog
355+
changelog_content = """# Changelog
356+
357+
## UNRELEASED
358+
359+
## 1.2.3 (2024-01-01)
360+
361+
- Some old change
362+
"""
363+
docs_dir = temp_path / "docs"
364+
docs_dir.mkdir()
365+
changelog_path = docs_dir / "changelog.md"
366+
changelog_path.write_text(changelog_content)
367+
368+
# Test with title containing multiple markdown elements
369+
pr_title_complex = "Fix `__getattr__` and add support for `__setitem__` methods"
370+
371+
# Run the script
372+
result = subprocess.run(
373+
[
374+
sys.executable,
375+
str(Path(__file__).parent.parent.parent / "modify_changelog.py"),
376+
"update_changelog",
377+
"999",
378+
pr_title_complex,
379+
],
380+
capture_output=True,
381+
text=True,
382+
cwd=temp_path,
383+
check=False,
384+
)
385+
386+
assert result.returncode == 0
387+
assert f"Added changelog entry for PR #999: {pr_title_complex}" in result.stdout
388+
389+
# Check that all backticks are preserved in the changelog
390+
updated_changelog = changelog_path.read_text()
391+
expected_entry = f"- {pr_title_complex} [#999](https://github.com/egraphs-good/egglog-python/pull/999)"
392+
assert expected_entry in updated_changelog
393+
394+
# Specifically check that both sets of backticks are preserved
395+
assert "`__getattr__`" in updated_changelog
396+
assert "`__setitem__`" in updated_changelog

0 commit comments

Comments
 (0)