Merge pull request #17287 from alebcay/messages-strict-typing
messages: enable strict typing
This commit is contained in:
commit
a18e43c67c
@ -1,32 +1,43 @@
|
|||||||
# typed: true
|
# typed: strict
|
||||||
# frozen_string_literal: true
|
# frozen_string_literal: true
|
||||||
|
|
||||||
# A {Messages} object collects messages that may need to be displayed together
|
# A {Messages} object collects messages that may need to be displayed together
|
||||||
# at the end of a multi-step `brew` command run.
|
# at the end of a multi-step `brew` command run.
|
||||||
class Messages
|
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 }
|
sig { void }
|
||||||
def initialize
|
def initialize
|
||||||
@caveats = []
|
@caveats = T.let([], T::Array[T::Hash[Symbol, Symbol]])
|
||||||
@package_count = 0
|
@package_count = T.let(0, Integer)
|
||||||
@install_times = []
|
@install_times = T.let([], T::Array[T::Hash[String, Float]])
|
||||||
end
|
end
|
||||||
|
|
||||||
|
sig { params(package: String, caveats: T.any(String, Caveats)).void }
|
||||||
def record_caveats(package, caveats)
|
def record_caveats(package, caveats)
|
||||||
@caveats.push(package:, caveats:)
|
@caveats.push(package:, caveats:)
|
||||||
end
|
end
|
||||||
|
|
||||||
|
sig { params(package: String, elapsed_time: Float).void }
|
||||||
def package_installed(package, elapsed_time)
|
def package_installed(package, elapsed_time)
|
||||||
@package_count += 1
|
@package_count += 1
|
||||||
@install_times.push(package:, time: elapsed_time)
|
@install_times.push(package:, time: elapsed_time)
|
||||||
end
|
end
|
||||||
|
|
||||||
|
sig { params(force_caveats: T::Boolean, display_times: T::Boolean).void }
|
||||||
def display_messages(force_caveats: false, display_times: false)
|
def display_messages(force_caveats: false, display_times: false)
|
||||||
display_caveats(force: force_caveats)
|
display_caveats(force: force_caveats)
|
||||||
display_install_times if display_times
|
display_install_times if display_times
|
||||||
end
|
end
|
||||||
|
|
||||||
|
sig { params(force: T::Boolean).void }
|
||||||
def display_caveats(force: false)
|
def display_caveats(force: false)
|
||||||
return if @package_count.zero?
|
return if @package_count.zero?
|
||||||
return if @package_count == 1 && !force
|
return if @package_count == 1 && !force
|
||||||
@ -38,6 +49,7 @@ class Messages
|
|||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
|
sig { void }
|
||||||
def display_install_times
|
def display_install_times
|
||||||
return if install_times.empty?
|
return if install_times.empty?
|
||||||
|
|
||||||
|
|||||||
@ -11,7 +11,7 @@ RSpec.describe Messages do
|
|||||||
describe "#record_caveats" do
|
describe "#record_caveats" do
|
||||||
it "adds a caveat" do
|
it "adds a caveat" do
|
||||||
expect 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.to change(messages.caveats, :count).by(1)
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
@ -19,13 +19,13 @@ RSpec.describe Messages do
|
|||||||
describe "#package_installed" do
|
describe "#package_installed" do
|
||||||
it "increases the package count" do
|
it "increases the package count" do
|
||||||
expect 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.to change(messages, :package_count).by(1)
|
||||||
end
|
end
|
||||||
|
|
||||||
it "adds to install_times" do
|
it "adds to install_times" do
|
||||||
expect 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.to change(messages.install_times, :count).by(1)
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
@ -33,8 +33,8 @@ RSpec.describe Messages do
|
|||||||
describe "#display_messages" do
|
describe "#display_messages" do
|
||||||
context "when package_count is less than two" do
|
context "when package_count is less than two" do
|
||||||
before do
|
before do
|
||||||
messages.record_caveats(test_formula, "Zsh completions were installed")
|
messages.record_caveats(test_formula.name, "Zsh completions were installed")
|
||||||
messages.package_installed(test_formula, elapsed_time)
|
messages.package_installed(test_formula.name, elapsed_time)
|
||||||
end
|
end
|
||||||
|
|
||||||
it "doesn't print caveat details" do
|
it "doesn't print caveat details" do
|
||||||
@ -44,7 +44,7 @@ RSpec.describe Messages do
|
|||||||
|
|
||||||
context "when caveats is empty" do
|
context "when caveats is empty" do
|
||||||
before do
|
before do
|
||||||
messages.package_installed(test_formula, elapsed_time)
|
messages.package_installed(test_formula.name, elapsed_time)
|
||||||
end
|
end
|
||||||
|
|
||||||
it "doesn't print caveat details" do
|
it "doesn't print caveat details" do
|
||||||
@ -56,9 +56,9 @@ RSpec.describe Messages do
|
|||||||
let(:test_formula2) { formula("bar") { url("https://brew.sh/bar-0.1.tgz") } }
|
let(:test_formula2) { formula("bar") { url("https://brew.sh/bar-0.1.tgz") } }
|
||||||
|
|
||||||
before do
|
before do
|
||||||
messages.record_caveats(test_formula, "Zsh completions were installed")
|
messages.record_caveats(test_formula.name, "Zsh completions were installed")
|
||||||
messages.package_installed(test_formula, elapsed_time)
|
messages.package_installed(test_formula.name, elapsed_time)
|
||||||
messages.package_installed(test_formula2, elapsed_time)
|
messages.package_installed(test_formula2.name, elapsed_time)
|
||||||
end
|
end
|
||||||
|
|
||||||
it "prints caveat details" do
|
it "prints caveat details" do
|
||||||
@ -81,7 +81,7 @@ RSpec.describe Messages do
|
|||||||
|
|
||||||
context "when `install_times` is present" do
|
context "when `install_times` is present" do
|
||||||
before do
|
before do
|
||||||
messages.package_installed(test_formula, elapsed_time)
|
messages.package_installed(test_formula.name, elapsed_time)
|
||||||
end
|
end
|
||||||
|
|
||||||
it "prints installation times" do
|
it "prints installation times" do
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user