diff --git a/cmd/vociferate/main_test.go b/cmd/vociferate/main_test.go index 8625e29..771d8b9 100644 --- a/cmd/vociferate/main_test.go +++ b/cmd/vociferate/main_test.go @@ -36,6 +36,19 @@ func TestMainPrintUnreleasedWritesPendingNotes(t *testing.T) { } } +func TestMainPrintReleaseNotesWritesTaggedSection(t *testing.T) { + root := t.TempDir() + writeFile(t, filepath.Join(root, "CHANGELOG.md"), "# Changelog\n\n## [Unreleased]\n\n### Added\n\n- Feature.\n\n## [1.1.6] - 2017-12-20\n\n### Fixed\n\n- Historical note.\n") + + stdout, stderr, code := runMain(t, "--print-release-notes", "--version", "1.1.6", "--root", root) + if code != 0 { + t.Fatalf("expected exit 0, got %d (stderr: %s)", code, stderr) + } + if stdout != "## [1.1.6] - 2017-12-20\n\n### Fixed\n\n- Historical note.\n" { + t.Fatalf("unexpected release notes output: %q", stdout) + } +} + func TestMainUsageExitWhenRequiredFlagsMissing(t *testing.T) { _, stderr, code := runMain(t) if code != 2 { diff --git a/internal/vociferate/vociferate_test.go b/internal/vociferate/vociferate_test.go index ff820ff..cc7c09f 100644 --- a/internal/vociferate/vociferate_test.go +++ b/internal/vociferate/vociferate_test.go @@ -128,6 +128,19 @@ func (s *PrepareSuite) TestUnreleasedBody_ReturnsErrorWhenUnreleasedSectionMissi require.ErrorContains(s.T(), err, "unreleased section") } +func (s *PrepareSuite) TestReleaseNotes_ReturnsReleaseSectionForVersion() { + notes, err := vociferate.ReleaseNotes(s.rootDir, "1.1.6", vociferate.Options{}) + + require.NoError(s.T(), err) + require.Equal(s.T(), "## [1.1.6] - 2017-12-20\n\n### Fixed\n\n- Historical note.\n", notes) +} + +func (s *PrepareSuite) TestReleaseNotes_ReturnsErrorWhenVersionSectionMissing() { + _, err := vociferate.ReleaseNotes(s.rootDir, "9.9.9", vociferate.Options{}) + + require.ErrorContains(s.T(), err, "release notes section") +} + func (s *PrepareSuite) TestRecommendedTag_ReturnsErrorWhenUnreleasedHasOnlyTemplateHeadings() { require.NoError(s.T(), os.WriteFile( filepath.Join(s.rootDir, "CHANGELOG.md"),