update cmd/uses and cmd/deps tests
These tests were very simple before and now this should result in more code coverage without affecting test performance. The only tricky thing was testing the `--missing` option without actually installing a package using `install_test_formula` because that is very slow (around 10 seconds on my machine). I ended up just writing the tab to a plausible keg directory for each package I wanted to "install". This allows us to test the behavior while also not increasing CI time by ~20 seconds (though it'd probably be faster on CI than my local machine).
This commit is contained in:
parent
72152c09c7
commit
5c41e85ae9
@ -6,16 +6,34 @@ describe "brew deps" do
|
|||||||
it_behaves_like "parseable arguments"
|
it_behaves_like "parseable arguments"
|
||||||
|
|
||||||
it "outputs all of a Formula's dependencies and their dependencies on separate lines", :integration_test do
|
it "outputs all of a Formula's dependencies and their dependencies on separate lines", :integration_test do
|
||||||
setup_test_formula "foo"
|
# Included in output
|
||||||
setup_test_formula "bar"
|
setup_test_formula "bar"
|
||||||
|
setup_test_formula "foo"
|
||||||
|
setup_test_formula "test"
|
||||||
|
|
||||||
|
# Excluded from output
|
||||||
setup_test_formula "baz", <<~RUBY
|
setup_test_formula "baz", <<~RUBY
|
||||||
url "https://brew.sh/baz-1.0"
|
url "https://brew.sh/baz-1.0"
|
||||||
depends_on "bar"
|
depends_on "bar"
|
||||||
|
depends_on "build" => :build
|
||||||
|
depends_on "test" => :test
|
||||||
|
depends_on "optional" => :optional
|
||||||
|
depends_on "recommended_test" => [:recommended, :test]
|
||||||
|
depends_on "installed"
|
||||||
RUBY
|
RUBY
|
||||||
|
setup_test_formula "build"
|
||||||
|
setup_test_formula "optional"
|
||||||
|
setup_test_formula "recommended_test"
|
||||||
|
setup_test_formula "installed"
|
||||||
|
|
||||||
expect { brew "deps", "baz" }
|
# Mock `Formula#any_version_installed?` by creating the tab in a plausible keg directory
|
||||||
|
keg_dir = HOMEBREW_CELLAR/"installed"/"1.0"
|
||||||
|
keg_dir.mkpath
|
||||||
|
touch keg_dir/Tab::FILENAME
|
||||||
|
|
||||||
|
expect { brew "deps", "baz", "--include-test", "--missing", "--skip-recommended" }
|
||||||
.to be_a_success
|
.to be_a_success
|
||||||
.and output("bar\nfoo\n").to_stdout
|
.and output("bar\nfoo\ntest\n").to_stdout
|
||||||
.and not_to_output.to_stderr
|
.and not_to_output.to_stderr
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
@ -6,15 +6,37 @@ describe "brew uses" do
|
|||||||
it_behaves_like "parseable arguments"
|
it_behaves_like "parseable arguments"
|
||||||
|
|
||||||
it "prints the Formulae a given Formula is used by", :integration_test do
|
it "prints the Formulae a given Formula is used by", :integration_test do
|
||||||
setup_test_formula "foo"
|
# Included in output
|
||||||
setup_test_formula "bar"
|
setup_test_formula "bar"
|
||||||
setup_test_formula "baz", <<~RUBY
|
setup_test_formula "optional", <<~RUBY
|
||||||
url "https://brew.sh/baz-1.0"
|
url "https://brew.sh/optional-1.0"
|
||||||
depends_on "bar"
|
depends_on "bar" => :optional
|
||||||
RUBY
|
RUBY
|
||||||
|
|
||||||
expect { brew "uses", "--eval-all", "--recursive", "foo" }
|
# Excluded from output
|
||||||
.to output(/(bar\nbaz|baz\nbar)/).to_stdout
|
setup_test_formula "foo"
|
||||||
|
setup_test_formula "test", <<~RUBY
|
||||||
|
url "https://brew.sh/test-1.0"
|
||||||
|
depends_on "foo" => :test
|
||||||
|
RUBY
|
||||||
|
setup_test_formula "build", <<~RUBY
|
||||||
|
url "https://brew.sh/build-1.0"
|
||||||
|
depends_on "foo" => :build
|
||||||
|
RUBY
|
||||||
|
setup_test_formula "installed", <<~RUBY
|
||||||
|
url "https://brew.sh/installed-1.0"
|
||||||
|
depends_on "foo"
|
||||||
|
RUBY
|
||||||
|
|
||||||
|
# Mock `Formula#any_version_installed?` by creating the tab in a plausible keg directory
|
||||||
|
%w[foo installed].each do |formula_name|
|
||||||
|
keg_dir = HOMEBREW_CELLAR/formula_name/"1.0"
|
||||||
|
keg_dir.mkpath
|
||||||
|
touch keg_dir/Tab::FILENAME
|
||||||
|
end
|
||||||
|
|
||||||
|
expect { brew "uses", "foo", "--eval-all", "--include-optional", "--missing", "--recursive" }
|
||||||
|
.to output(/^(bar\noptional|optional\nbar)$/).to_stdout
|
||||||
.and not_to_output.to_stderr
|
.and not_to_output.to_stderr
|
||||||
.and be_a_success
|
.and be_a_success
|
||||||
end
|
end
|
||||||
|
@ -166,10 +166,6 @@ RSpec.shared_context "integration test" do # rubocop:disable RSpec/ContextWordin
|
|||||||
|
|
||||||
# something here
|
# something here
|
||||||
RUBY
|
RUBY
|
||||||
when "foo", "gnupg"
|
|
||||||
content = <<~RUBY
|
|
||||||
url "https://brew.sh/#{name}-1.0"
|
|
||||||
RUBY
|
|
||||||
when "bar"
|
when "bar"
|
||||||
content = <<~RUBY
|
content = <<~RUBY
|
||||||
url "https://brew.sh/#{name}-1.0"
|
url "https://brew.sh/#{name}-1.0"
|
||||||
@ -180,6 +176,10 @@ RSpec.shared_context "integration test" do # rubocop:disable RSpec/ContextWordin
|
|||||||
url "https://brew.sh/#patchelf-1.0"
|
url "https://brew.sh/#patchelf-1.0"
|
||||||
license "0BSD"
|
license "0BSD"
|
||||||
RUBY
|
RUBY
|
||||||
|
else
|
||||||
|
content ||= <<~RUBY
|
||||||
|
url "https://brew.sh/#{name}-1.0"
|
||||||
|
RUBY
|
||||||
end
|
end
|
||||||
|
|
||||||
Formulary.core_path(name).tap do |formula_path|
|
Formulary.core_path(name).tap do |formula_path|
|
||||||
|
Loading…
x
Reference in New Issue
Block a user