Test rst to md conversion

This commit is contained in:
Šarūnas Nejus 2024-12-03 23:50:07 +00:00
parent 13e83cdce3
commit 7b9625bc86
No known key found for this signature in database
GPG key ID: DD28F6704DBE3435
3 changed files with 91 additions and 10 deletions

View file

@ -29,12 +29,12 @@ jobs:
python-version: ${{ matrix.python-version }}
cache: poetry
- name: Install PyGobject dependencies on Ubuntu
- name: Install PyGobject and release script dependencies on Ubuntu
if: matrix.platform == 'ubuntu-latest'
run: |
sudo apt update
sudo apt install ffmpeg gobject-introspection libgirepository1.0-dev
poetry install --extras=replaygain --extras=reflink
sudo apt install ffmpeg gobject-introspection libgirepository1.0-dev pandoc
poetry install --with=release --extras=replaygain --extras=reflink
- name: Install Python dependencies
run: poetry install --only=main,test --extras=autobpm

View file

@ -119,13 +119,15 @@ def rst2md(text: str) -> str:
)
def changelog_as_markdown() -> str:
def get_changelog_contents() -> str | None:
if m := RST_LATEST_CHANGES.search(CHANGELOG.read_text()):
return m.group(1)
return None
def changelog_as_markdown(rst: str) -> str:
"""Get the latest changelog entry as hacked up Markdown."""
contents = CHANGELOG.read_text()
m = RST_LATEST_CHANGES.search(contents)
rst = m.group(1) if m else ""
for pattern, repl in RST_REPLACEMENTS:
rst = re.sub(pattern, repl, rst, flags=re.M)
@ -155,7 +157,8 @@ def bump(version: Version) -> None:
@cli.command()
def changelog():
"""Get the most recent version's changelog as Markdown."""
print(changelog_as_markdown())
if changelog := get_changelog_contents():
print(changelog_as_markdown(changelog))
if __name__ == "__main__":

78
test/test_release.py Normal file
View file

@ -0,0 +1,78 @@
"""Tests for the release utils."""
import os
import shutil
import sys
import pytest
from extra.release import changelog_as_markdown
pytestmark = pytest.mark.skipif(
not (
(os.environ.get("GITHUB_ACTIONS") == "true" and sys.platform != "win32")
or bool(shutil.which("pandoc"))
),
reason="pandoc isn't available",
)
@pytest.fixture
def rst_changelog():
return """New features:
* :doc:`/plugins/substitute`: Some substitute
multi-line change.
:bug:`5467`
* :ref:`list-cmd` Update.
Bug fixes:
* Some fix that refers to an issue.
:bug:`5467`
* Some fix that mentions user :user:`username`.
Empty section:
Other changes:
* Changed `bitesize` label to `good first issue`. Our `contribute`_ page is now
automatically populated with these issues. :bug:`4855`
.. _contribute: https://github.com/beetbox/beets/contribute
2.1.0 (November 22, 2024)
-------------------------
Bug fixes:
* Fixed something."""
@pytest.fixture
def md_changelog():
return r"""### New features
- Command **`list`**: Update.
- Plugin **`substitute`**: Some substitute multi-line change. :bug: (\#5467)
### Bug fixes
- Some fix that mentions user @username.
- Some fix that refers to an issue. :bug: (\#5467)
### Other changes
# 2.1.0 (November 22, 2024)
- Changed `bitesize` label to `good first issue`. Our [contribute](https://github.com/beetbox/beets/contribute) page is now automatically populated with these issues. :bug: (\#4855)
### Bug fixes
- Fixed something.""" # noqa: E501
def test_convert_rst_to_md(rst_changelog, md_changelog):
actual = changelog_as_markdown(rst_changelog)
assert actual == md_changelog