From f2c46d4608fc36003365e9d534e227667feb9871 Mon Sep 17 00:00:00 2001 From: Steve Peters Date: Wed, 28 Apr 2021 21:23:52 -0700 Subject: [PATCH] release_notes: fix for missing body message Some merge commits don't include the title of the pull request on subsequent lines, leaving the markdown link text blank in the release notes. This appends the subject line of the commit message instead if the body is missing and adds a test case. --- Library/Homebrew/release_notes.rb | 9 +++++++-- Library/Homebrew/test/release_notes_spec.rb | 4 ++++ 2 files changed, 11 insertions(+), 2 deletions(-) diff --git a/Library/Homebrew/release_notes.rb b/Library/Homebrew/release_notes.rb index 19cdba9a17560..9a6e729d2444d 100644 --- a/Library/Homebrew/release_notes.rb +++ b/Library/Homebrew/release_notes.rb @@ -19,8 +19,13 @@ def generate_release_notes(start_ref, end_ref, markdown: false) ).lines.grep(/Merge pull request/) log_output.map! do |s| - s.gsub(%r{.*Merge pull request #(\d+) from ([^/]+)/[^>]*(>>)*}, - "https://github.com/Homebrew/brew/pull/\\1 (@\\2)") + matches = s.match(%r{.*Merge pull request #(?\d+) from (?[^/]+)/[^>]*>> - (?.*)}) + body = if matches[:body].empty? + s.gsub(/.*(Merge pull request .*) >> - .*/, "\\1").chomp + else + matches[:body] + end + "https://github.com/Homebrew/brew/pull/#{matches[:pr]} (@#{matches[:user]}) - #{body}\n" end if markdown diff --git a/Library/Homebrew/test/release_notes_spec.rb b/Library/Homebrew/test/release_notes_spec.rb index a65e347b0a52c..d89a8e9671656 100644 --- a/Library/Homebrew/test/release_notes_spec.rb +++ b/Library/Homebrew/test/release_notes_spec.rb @@ -12,12 +12,15 @@ system "git", "commit", "--allow-empty", "-m", "Merge pull request #1 from Homebrew/fix", "-m", "Do something" system "git", "commit", "--allow-empty", "-m", "make a change" system "git", "commit", "--allow-empty", "-m", "Merge pull request #2 from User/fix", "-m", "Do something else" + system "git", "commit", "--allow-empty", "-m", "another change" + system "git", "commit", "--allow-empty", "-m", "Merge pull request #3 from User/another_change" end end describe ".generate_release_notes" do it "generates release notes" do expect(described_class.generate_release_notes("release-notes-testing", "HEAD")).to eq <<~NOTES + https://github.com/Homebrew/brew/pull/3 (@User) - Merge pull request #3 from User/another_change https://github.com/Homebrew/brew/pull/2 (@User) - Do something else https://github.com/Homebrew/brew/pull/1 (@Homebrew) - Do something NOTES @@ -25,6 +28,7 @@ it "generates markdown release notes" do expect(described_class.generate_release_notes("release-notes-testing", "HEAD", markdown: true)).to eq <<~NOTES + - [Merge pull request #3 from User/another_change](https://github.com/Homebrew/brew/pull/3) (@User) - [Do something else](https://github.com/Homebrew/brew/pull/2) (@User) - [Do something](https://github.com/Homebrew/brew/pull/1) (@Homebrew) NOTES