brew/Library/Homebrew/test/cmd/--prefix_spec.rb
Mike McQuaid ca47b47f77
Speedup brew --prefix <formula>
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.
2021-02-25 17:07:28 +00:00

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