
This case is _really_ slow even although it's something we encourage people to run often and build systems often do. The `brew --prefix` case is really fast because it's just in Bash so: let's pull the `brew --prefix <formula>` case into Bash too. This doesn't handle any edge-cases like `--installed` and the formula detection is pretty simple. Also, to make this behaviour consistent, never output `Cellar` paths from the (Ruby) `brew --prefix`; we never want people relying on the Cellar paths anyway, only output them if the formula wasn't installed (where, arguably, using a Cellar path is even worse) and the speedup is worth this deviation in behaviour.
30 lines
905 B
Ruby
30 lines
905 B
Ruby
# typed: false
|
|
# frozen_string_literal: true
|
|
|
|
require "cmd/shared_examples/args_parse"
|
|
|
|
describe "brew --prefix" do
|
|
it_behaves_like "parseable arguments"
|
|
|
|
it "prints a given Formula's prefix", :integration_test do
|
|
expect { brew "--prefix", testball }
|
|
.to output("#{HOMEBREW_PREFIX}/opt/testball\n").to_stdout
|
|
.and not_to_output.to_stderr
|
|
.and be_a_success
|
|
end
|
|
|
|
it "errors if the given Formula doesn't exist", :integration_test do
|
|
expect { brew "--prefix", "--installed", "nonexistent" }
|
|
.to output(/No available formula/).to_stderr
|
|
.and not_to_output.to_stdout
|
|
.and be_a_failure
|
|
end
|
|
|
|
it "prints a warning with `--installed` if the given Formula is not installed", :integration_test do
|
|
expect { brew "--prefix", "--installed", testball }
|
|
.to not_to_output.to_stdout
|
|
.and output(/testball/).to_stderr
|
|
.and be_a_failure
|
|
end
|
|
end
|