brew/Library/Homebrew/test/bottle_hooks_spec.rb
Mike McQuaid 7ec0505200 Preserve link status on reinstall/upgrade.
This means if a user has manually `brew unlink` or `brew link --force`d
something then that status will be preserved after they `brew upgrade`
or `brew reinstall` that formula.

This generally should make things that are keg-only by default easier
to swallow.
2017-07-30 16:20:32 +01:00

53 lines
1.2 KiB
Ruby

require "formula_installer"
require "hooks/bottles"
describe Homebrew::Hooks::Bottles do
alias_matcher :pour_bottle, :be_pour_bottle
subject { FormulaInstaller.new formula }
let(:formula) do
double(
bottle: nil,
local_bottle_path: nil,
bottle_disabled?: false,
some_random_method: true,
linked_keg: Pathname("foo"),
rack: Pathname("bar"),
)
end
after(:each) do
described_class.reset_hooks
end
describe "#setup_formula_has_bottle" do
context "given a block which evaluates to true" do
before(:each) do
described_class.setup_formula_has_bottle(&:some_random_method)
end
it { is_expected.to pour_bottle }
end
context "given a block which evaluates to false" do
before(:each) do
described_class.setup_formula_has_bottle { |f| !f.some_random_method }
end
it { is_expected.not_to pour_bottle }
end
end
describe "#setup_pour_formula_bottle" do
before(:each) do
described_class.setup_formula_has_bottle { true }
described_class.setup_pour_formula_bottle(&:some_random_method)
end
it "does not raise an error" do
expect { subject.pour }.not_to raise_error
end
end
end