Add tests and fix type signature
This commit is contained in:
parent
f382f38034
commit
e13dc902df
@ -32,6 +32,9 @@ module Homebrew
|
|||||||
def release_notes
|
def release_notes
|
||||||
args = release_notes_args.parse
|
args = release_notes_args.parse
|
||||||
|
|
||||||
|
# TODO: (2.8) Deprecate this command now that the `brew release` command exists.
|
||||||
|
# odeprecated "`brew release-notes`"
|
||||||
|
|
||||||
previous_tag = args.named.first
|
previous_tag = args.named.first
|
||||||
|
|
||||||
if previous_tag.present?
|
if previous_tag.present?
|
||||||
@ -56,7 +59,7 @@ module Homebrew
|
|||||||
odie "Ref #{ref} does not exist!"
|
odie "Ref #{ref} does not exist!"
|
||||||
end
|
end
|
||||||
|
|
||||||
release_notes = ReleaseNotes.generate_release_notes previous_tag, end_ref, markdown: T.must(args.markdown?)
|
release_notes = ReleaseNotes.generate_release_notes previous_tag, end_ref, markdown: args.markdown?
|
||||||
|
|
||||||
$stderr.puts "Release notes between #{previous_tag} and #{end_ref}:"
|
$stderr.puts "Release notes between #{previous_tag} and #{end_ref}:"
|
||||||
puts release_notes
|
puts release_notes
|
||||||
|
@ -10,7 +10,7 @@ module ReleaseNotes
|
|||||||
module_function
|
module_function
|
||||||
|
|
||||||
sig {
|
sig {
|
||||||
params(start_ref: T.any(String, Version), end_ref: T.any(String, Version), markdown: T::Boolean)
|
params(start_ref: T.any(String, Version), end_ref: T.any(String, Version), markdown: T.nilable(T::Boolean))
|
||||||
.returns(String)
|
.returns(String)
|
||||||
}
|
}
|
||||||
def generate_release_notes(start_ref, end_ref, markdown: false)
|
def generate_release_notes(start_ref, end_ref, markdown: false)
|
||||||
|
8
Library/Homebrew/test/dev-cmd/release_spec.rb
Normal file
8
Library/Homebrew/test/dev-cmd/release_spec.rb
Normal file
@ -0,0 +1,8 @@
|
|||||||
|
# typed: false
|
||||||
|
# frozen_string_literal: true
|
||||||
|
|
||||||
|
require "cmd/shared_examples/args_parse"
|
||||||
|
|
||||||
|
describe "Homebrew.release_args" do
|
||||||
|
it_behaves_like "parseable arguments"
|
||||||
|
end
|
33
Library/Homebrew/test/release_notes_spec.rb
Normal file
33
Library/Homebrew/test/release_notes_spec.rb
Normal file
@ -0,0 +1,33 @@
|
|||||||
|
# typed: false
|
||||||
|
# frozen_string_literal: true
|
||||||
|
|
||||||
|
require "release_notes"
|
||||||
|
|
||||||
|
describe ReleaseNotes do
|
||||||
|
before do
|
||||||
|
HOMEBREW_REPOSITORY.cd do
|
||||||
|
system "git", "init"
|
||||||
|
system "git", "commit", "--allow-empty", "-m", "Initial commit"
|
||||||
|
system "git", "tag", "release-notes-testing"
|
||||||
|
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"
|
||||||
|
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/2 (@User) - Do something else
|
||||||
|
https://github.com/Homebrew/brew/pull/1 (@Homebrew) - Do something
|
||||||
|
NOTES
|
||||||
|
end
|
||||||
|
|
||||||
|
it "generates markdown release notes" do
|
||||||
|
expect(described_class.generate_release_notes("release-notes-testing", "HEAD", markdown: true)).to eq <<~NOTES
|
||||||
|
- [Do something else](https://github.com/Homebrew/brew/pull/2) (@User)
|
||||||
|
- [Do something](https://github.com/Homebrew/brew/pull/1) (@Homebrew)
|
||||||
|
NOTES
|
||||||
|
end
|
||||||
|
end
|
||||||
|
end
|
Loading…
x
Reference in New Issue
Block a user