brew/Library/Homebrew/test/cmd/link_spec.rb
Mike McQuaid f6bf989378 Remove some integration tests
We have an awful lot of integration tests and they are (comparatively)
really slow. Let's kill those that test edge case conditions and focus
on those that test that our functionality works as expected. Edge cases
can be better tested with unit tests.
2018-05-23 14:41:31 +01:00

46 lines
1.5 KiB
Ruby

describe "brew link", :integration_test do
it "does not fail if the given Formula is already linked" do
setup_test_formula "testball1"
expect { brew "install", "testball1" }.to be_a_success
expect { brew "link", "testball1" }.to be_a_success
end
it "links a given Formula" do
setup_test_formula "testball1"
expect { brew "install", "testball1" }.to be_a_success
expect { brew "unlink", "testball1" }.to be_a_success
expect { brew "link", "--dry-run", "testball1" }
.to output(/Would link/).to_stdout
.and not_to_output.to_stderr
.and be_a_success
expect { brew "link", "--dry-run", "--overwrite", "testball1" }
.to output(/Would remove/).to_stdout
.and not_to_output.to_stderr
.and be_a_success
expect { brew "link", "testball1" }
.to output(/Linking/).to_stdout
.and not_to_output.to_stderr
.and be_a_success
end
it "refuses to link keg-only Formulae" do
setup_test_formula "testball1", <<~EOS
keg_only "just because"
EOS
expect { brew "install", "testball1" }.to be_a_success
expect { brew "link", "testball1", "SHELL" => "/bin/zsh" }
.to output(/testball1 is keg-only/).to_stderr
.and output(a_string_matching(/Note that doing so can interfere with building software\./)
.and(matching("If you need to have this software first in your PATH instead consider running:")
.and(including("echo 'export PATH=\"#{HOMEBREW_PREFIX}/opt/testball1/bin:$PATH\"' >> ~/.zshrc")))).to_stdout
.and be_a_success
end
end