Mercurial > public > mercurial-scm > hg
diff tests/test-releasenotes-parsing.t @ 32778:91e355a0408b
releasenotes: command to manage release notes files
Per discussion on the mailing list, we want better release notes
for Mercurial.
This patch introduces an extension that provides a command for
producing release notes files. Functionality is implemented
as an extension because it could be useful outside of the
Mercurial project and because there is some code (like rst
parsing) that already exists in Mercurial and it doesn't make
sense to reinvent the wheel.
The general idea with the extension is that changeset authors
declare release notes in commit messages using rst directives.
Periodically (such as at publishing or release time), a project
maintainer runs `hg releasenotes` to extract release notes
fragments from commit messages and format them to an auto-generated
release notes file. More details are explained inline in docstrings.
There are several things that need addressed before this is ready
for prime time:
* Moar tests
* Interactive merge mode
* Implement similarity detection for individual notes items
* Support customizing section names/titles
* Parsing improvements for bullet lists and paragraphs
* Document which rst primitives can be parsed
* Retain arbitrary content (e.g. header section/paragraphs)
from existing release notes file
* Better error messages (line numbers, hints, etc)
author | Gregory Szorc <gregory.szorc@gmail.com> |
---|---|
date | Fri, 02 Jun 2017 23:33:30 +0200 |
parents | |
children | 5814db57941c |
line wrap: on
line diff
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/tests/test-releasenotes-parsing.t Fri Jun 02 23:33:30 2017 +0200 @@ -0,0 +1,169 @@ + $ cat >> $HGRCPATH << EOF + > [extensions] + > releasenotes= + > EOF + +Bullet point with a single item spanning a single line + + $ hg debugparsereleasenotes - << EOF + > New Features + > ============ + > + > * Bullet point item with a single line + > EOF + section: feature + bullet point: + paragraph: Bullet point item with a single line + +Bullet point that spans multiple lines. + + $ hg debugparsereleasenotes - << EOF + > New Features + > ============ + > + > * Bullet point with a paragraph + > that spans multiple lines. + > EOF + section: feature + bullet point: + paragraph: Bullet point with a paragraph that spans multiple lines. + + $ hg debugparsereleasenotes - << EOF + > New Features + > ============ + > + > * Bullet point with a paragraph + > that spans multiple lines. + > + > And has an empty line between lines too. + > With a line cuddling that. + > EOF + section: feature + bullet point: + paragraph: Bullet point with a paragraph that spans multiple lines. + paragraph: And has an empty line between lines too. With a line cuddling that. + +Multiple bullet points. With some entries being multiple lines. + + $ hg debugparsereleasenotes - << EOF + > New Features + > ============ + > + > * First bullet point. It has a single line. + > + > * Second bullet point. + > It consists of multiple lines. + > + > * Third bullet point. It has a single line. + > EOF + section: feature + bullet point: + paragraph: First bullet point. It has a single line. + paragraph: Second bullet point. It consists of multiple lines. + paragraph: Third bullet point. It has a single line. + +Bullet point without newline between items + + $ hg debugparsereleasenotes - << EOF + > New Features + > ============ + > + > * First bullet point + > * Second bullet point + > And it has multiple lines + > * Third bullet point + > * Fourth bullet point + > EOF + section: feature + bullet point: + paragraph: First bullet point + paragraph: Second bullet point And it has multiple lines + paragraph: Third bullet point + paragraph: Fourth bullet point + +Sub-section contents are read + + $ hg debugparsereleasenotes - << EOF + > New Features + > ============ + > + > First Feature + > ------------- + > + > This is the first new feature that was implemented. + > + > And a second paragraph about it. + > + > Second Feature + > -------------- + > + > This is the second new feature that was implemented. + > + > Paragraph two. + > + > Paragraph three. + > EOF + section: feature + subsection: First Feature + paragraph: This is the first new feature that was implemented. + paragraph: And a second paragraph about it. + subsection: Second Feature + paragraph: This is the second new feature that was implemented. + paragraph: Paragraph two. + paragraph: Paragraph three. + +Multiple sections are read + + $ hg debugparsereleasenotes - << EOF + > New Features + > ============ + > + > * Feature 1 + > * Feature 2 + > + > Bug Fixes + > ========= + > + > * Fix 1 + > * Fix 2 + > EOF + section: feature + bullet point: + paragraph: Feature 1 + paragraph: Feature 2 + section: fix + bullet point: + paragraph: Fix 1 + paragraph: Fix 2 + +Mixed sub-sections and bullet list + + $ hg debugparsereleasenotes - << EOF + > New Features + > ============ + > + > Feature 1 + > --------- + > + > Some words about the first feature. + > + > Feature 2 + > --------- + > + > Some words about the second feature. + > That span multiple lines. + > + > Other Changes + > ------------- + > + > * Bullet item 1 + > * Bullet item 2 + > EOF + section: feature + subsection: Feature 1 + paragraph: Some words about the first feature. + subsection: Feature 2 + paragraph: Some words about the second feature. That span multiple lines. + bullet point: + paragraph: Bullet item 1 + paragraph: Bullet item 2