2023-12-04 13:43:39 -05:00
|
|
|
# frozen_string_literal: true
|
|
|
|
|
|
|
|
require "deprecate_disable"
|
|
|
|
|
2024-02-18 15:11:11 -08:00
|
|
|
RSpec.describe DeprecateDisable do
|
2023-12-04 13:43:39 -05:00
|
|
|
let(:deprecated_formula) do
|
2024-07-14 11:49:43 -04:00
|
|
|
instance_double(Formula, deprecated?: true, disabled?: false, deprecation_reason: :does_not_build,
|
2024-11-07 15:50:03 -05:00
|
|
|
deprecation_replacement: nil, deprecation_date: nil, disable_date: nil)
|
2023-12-04 13:43:39 -05:00
|
|
|
end
|
|
|
|
let(:disabled_formula) do
|
2024-07-14 11:49:43 -04:00
|
|
|
instance_double(Formula, deprecated?: false, disabled?: true, disable_reason: "is broken",
|
2024-11-07 15:50:03 -05:00
|
|
|
disable_replacement: nil, deprecation_date: nil, disable_date: nil)
|
2023-12-04 13:43:39 -05:00
|
|
|
end
|
|
|
|
let(:deprecated_cask) do
|
2024-07-14 11:49:43 -04:00
|
|
|
instance_double(Cask::Cask, deprecated?: true, disabled?: false, deprecation_reason: :discontinued,
|
2024-11-07 15:50:03 -05:00
|
|
|
deprecation_replacement: nil, deprecation_date: nil, disable_date: nil)
|
2023-12-04 13:43:39 -05:00
|
|
|
end
|
|
|
|
let(:disabled_cask) do
|
2024-07-14 11:49:43 -04:00
|
|
|
instance_double(Cask::Cask, deprecated?: false, disabled?: true, disable_reason: nil,
|
2024-11-07 15:50:03 -05:00
|
|
|
disable_replacement: nil, deprecation_date: nil, disable_date: nil)
|
|
|
|
end
|
|
|
|
let(:deprecated_formula_with_replacement) do
|
|
|
|
instance_double(Formula, deprecated?: true, disabled?: false, deprecation_reason: :does_not_build,
|
|
|
|
deprecation_replacement: "foo", deprecation_date: nil, disable_date: nil)
|
|
|
|
end
|
|
|
|
let(:disabled_formula_with_replacement) do
|
|
|
|
instance_double(Formula, deprecated?: false, disabled?: true, disable_reason: "is broken",
|
|
|
|
disable_replacement: "bar", deprecation_date: nil, disable_date: nil)
|
|
|
|
end
|
|
|
|
let(:deprecated_cask_with_replacement) do
|
|
|
|
instance_double(Cask::Cask, deprecated?: true, disabled?: false, deprecation_reason: :discontinued,
|
|
|
|
deprecation_replacement: "baz", deprecation_date: nil, disable_date: nil)
|
|
|
|
end
|
|
|
|
let(:disabled_cask_with_replacement) do
|
|
|
|
instance_double(Cask::Cask, deprecated?: false, disabled?: true, disable_reason: nil,
|
|
|
|
disable_replacement: "qux", deprecation_date: nil, disable_date: nil)
|
2023-12-04 13:43:39 -05:00
|
|
|
end
|
|
|
|
|
|
|
|
before do
|
2024-11-07 15:50:03 -05:00
|
|
|
formulae = [
|
|
|
|
deprecated_formula,
|
|
|
|
disabled_formula,
|
|
|
|
deprecated_formula_with_replacement,
|
|
|
|
disabled_formula_with_replacement,
|
|
|
|
]
|
|
|
|
|
|
|
|
casks = [
|
|
|
|
deprecated_cask,
|
|
|
|
disabled_cask,
|
|
|
|
deprecated_cask_with_replacement,
|
|
|
|
disabled_cask_with_replacement,
|
|
|
|
]
|
|
|
|
|
|
|
|
formulae.each do |f|
|
|
|
|
allow(f).to receive(:is_a?).with(Formula).and_return(true)
|
|
|
|
allow(f).to receive(:is_a?).with(Cask::Cask).and_return(false)
|
|
|
|
end
|
|
|
|
|
|
|
|
casks.each do |c|
|
|
|
|
allow(c).to receive(:is_a?).with(Formula).and_return(false)
|
|
|
|
allow(c).to receive(:is_a?).with(Cask::Cask).and_return(true)
|
|
|
|
end
|
2023-12-04 13:43:39 -05:00
|
|
|
end
|
|
|
|
|
|
|
|
describe "::type" do
|
|
|
|
it "returns :deprecated if the formula is deprecated" do
|
|
|
|
expect(described_class.type(deprecated_formula)).to eq :deprecated
|
|
|
|
end
|
|
|
|
|
|
|
|
it "returns :disabled if the formula is disabled" do
|
|
|
|
expect(described_class.type(disabled_formula)).to eq :disabled
|
|
|
|
end
|
|
|
|
|
|
|
|
it "returns :deprecated if the cask is deprecated" do
|
|
|
|
expect(described_class.type(deprecated_cask)).to eq :deprecated
|
|
|
|
end
|
|
|
|
|
|
|
|
it "returns :disabled if the cask is disabled" do
|
|
|
|
expect(described_class.type(disabled_cask)).to eq :disabled
|
|
|
|
end
|
|
|
|
end
|
|
|
|
|
|
|
|
describe "::message" do
|
|
|
|
it "returns a deprecation message with a preset formula reason" do
|
|
|
|
expect(described_class.message(deprecated_formula))
|
|
|
|
.to eq "deprecated because it does not build!"
|
|
|
|
end
|
|
|
|
|
|
|
|
it "returns a disable message with a custom reason" do
|
|
|
|
expect(described_class.message(disabled_formula))
|
|
|
|
.to eq "disabled because it is broken!"
|
|
|
|
end
|
|
|
|
|
|
|
|
it "returns a deprecation message with a preset cask reason" do
|
|
|
|
expect(described_class.message(deprecated_cask))
|
|
|
|
.to eq "deprecated because it is discontinued upstream!"
|
|
|
|
end
|
|
|
|
|
|
|
|
it "returns a deprecation message with no reason" do
|
|
|
|
expect(described_class.message(disabled_cask))
|
|
|
|
.to eq "disabled!"
|
|
|
|
end
|
2024-11-07 15:50:03 -05:00
|
|
|
|
|
|
|
it "returns a replacement message for a deprecated formula" do
|
|
|
|
expect(described_class.message(deprecated_formula_with_replacement))
|
|
|
|
.to eq "deprecated because it does not build!\nReplacement:\n brew install foo\n"
|
|
|
|
end
|
|
|
|
|
|
|
|
it "returns a replacement message for a disabled formula" do
|
|
|
|
expect(described_class.message(disabled_formula_with_replacement))
|
|
|
|
.to eq "disabled because it is broken!\nReplacement:\n brew install bar\n"
|
|
|
|
end
|
|
|
|
|
|
|
|
it "returns a replacement message for a deprecated cask" do
|
|
|
|
expect(described_class.message(deprecated_cask_with_replacement))
|
|
|
|
.to eq "deprecated because it is discontinued upstream!\nReplacement:\n brew install baz\n"
|
|
|
|
end
|
|
|
|
|
|
|
|
it "returns a replacement message for a disabled cask" do
|
|
|
|
expect(described_class.message(disabled_cask_with_replacement))
|
|
|
|
.to eq "disabled!\nReplacement:\n brew install qux\n"
|
|
|
|
end
|
2023-12-04 13:43:39 -05:00
|
|
|
end
|
|
|
|
|
|
|
|
describe "::to_reason_string_or_symbol" do
|
|
|
|
it "returns the original string if it isn't a formula preset reason" do
|
|
|
|
expect(described_class.to_reason_string_or_symbol("discontinued", type: :formula)).to eq "discontinued"
|
|
|
|
end
|
|
|
|
|
|
|
|
it "returns the original string if it isn't a cask preset reason" do
|
|
|
|
expect(described_class.to_reason_string_or_symbol("does_not_build", type: :cask)).to eq "does_not_build"
|
|
|
|
end
|
|
|
|
|
|
|
|
it "returns a symbol if the original string is a formula preset reason" do
|
|
|
|
expect(described_class.to_reason_string_or_symbol("does_not_build", type: :formula))
|
|
|
|
.to eq :does_not_build
|
|
|
|
end
|
|
|
|
|
|
|
|
it "returns a symbol if the original string is a cask preset reason" do
|
|
|
|
expect(described_class.to_reason_string_or_symbol("discontinued", type: :cask))
|
|
|
|
.to eq :discontinued
|
|
|
|
end
|
|
|
|
end
|
|
|
|
end
|