Skip to content

Commit

Permalink
Merge pull request #17287 from alebcay/messages-strict-typing
Browse files Browse the repository at this point in the history
messages: enable strict typing
  • Loading branch information
MikeMcQuaid committed May 14, 2024
2 parents 90faeff + 00ba393 commit a18e43c
Show file tree
Hide file tree
Showing 2 changed files with 27 additions and 15 deletions.
22 changes: 17 additions & 5 deletions Library/Homebrew/messages.rb
Original file line number Diff line number Diff line change
@@ -1,32 +1,43 @@
# typed: true
# typed: strict
# frozen_string_literal: true

# A {Messages} object collects messages that may need to be displayed together
# at the end of a multi-step `brew` command run.
class Messages
attr_reader :caveats, :package_count, :install_times
sig { returns(T::Array[T::Hash[Symbol, Symbol]]) }
attr_reader :caveats

sig { returns(Integer) }
attr_reader :package_count

sig { returns(T::Array[T::Hash[String, Float]]) }
attr_reader :install_times

sig { void }
def initialize
@caveats = []
@package_count = 0
@install_times = []
@caveats = T.let([], T::Array[T::Hash[Symbol, Symbol]])
@package_count = T.let(0, Integer)
@install_times = T.let([], T::Array[T::Hash[String, Float]])
end

sig { params(package: String, caveats: T.any(String, Caveats)).void }
def record_caveats(package, caveats)
@caveats.push(package:, caveats:)
end

sig { params(package: String, elapsed_time: Float).void }
def package_installed(package, elapsed_time)
@package_count += 1
@install_times.push(package:, time: elapsed_time)
end

sig { params(force_caveats: T::Boolean, display_times: T::Boolean).void }
def display_messages(force_caveats: false, display_times: false)
display_caveats(force: force_caveats)
display_install_times if display_times
end

sig { params(force: T::Boolean).void }
def display_caveats(force: false)
return if @package_count.zero?
return if @package_count == 1 && !force
Expand All @@ -38,6 +49,7 @@ def display_caveats(force: false)
end
end

sig { void }
def display_install_times
return if install_times.empty?

Expand Down
20 changes: 10 additions & 10 deletions Library/Homebrew/test/messages_spec.rb
Original file line number Diff line number Diff line change
Expand Up @@ -11,30 +11,30 @@
describe "#record_caveats" do
it "adds a caveat" do
expect do
messages.record_caveats(test_formula, "Zsh completions were installed")
messages.record_caveats(test_formula.name, "Zsh completions were installed")
end.to change(messages.caveats, :count).by(1)
end
end

describe "#package_installed" do
it "increases the package count" do
expect do
messages.package_installed(test_formula, elapsed_time)
messages.package_installed(test_formula.name, elapsed_time)
end.to change(messages, :package_count).by(1)
end

it "adds to install_times" do
expect do
messages.package_installed(test_formula, elapsed_time)
messages.package_installed(test_formula.name, elapsed_time)
end.to change(messages.install_times, :count).by(1)
end
end

describe "#display_messages" do
context "when package_count is less than two" do
before do
messages.record_caveats(test_formula, "Zsh completions were installed")
messages.package_installed(test_formula, elapsed_time)
messages.record_caveats(test_formula.name, "Zsh completions were installed")
messages.package_installed(test_formula.name, elapsed_time)
end

it "doesn't print caveat details" do
Expand All @@ -44,7 +44,7 @@

context "when caveats is empty" do
before do
messages.package_installed(test_formula, elapsed_time)
messages.package_installed(test_formula.name, elapsed_time)
end

it "doesn't print caveat details" do
Expand All @@ -56,9 +56,9 @@
let(:test_formula2) { formula("bar") { url("https://brew.sh/bar-0.1.tgz") } }

before do
messages.record_caveats(test_formula, "Zsh completions were installed")
messages.package_installed(test_formula, elapsed_time)
messages.package_installed(test_formula2, elapsed_time)
messages.record_caveats(test_formula.name, "Zsh completions were installed")
messages.package_installed(test_formula.name, elapsed_time)
messages.package_installed(test_formula2.name, elapsed_time)
end

it "prints caveat details" do
Expand All @@ -81,7 +81,7 @@

context "when `install_times` is present" do
before do
messages.package_installed(test_formula, elapsed_time)
messages.package_installed(test_formula.name, elapsed_time)
end

it "prints installation times" do
Expand Down

0 comments on commit a18e43c

Please sign in to comment.