Add tests and fix type signature

This commit is contained in:
Rylan Polster 2021-01-23 02:06:12 -05:00
parent f382f38034
commit e13dc902df
No known key found for this signature in database
GPG Key ID: 46A744940CFF4D64
4 changed files with 46 additions and 2 deletions

View File

@ -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

View File

@ -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)

View 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

View 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