brew/Library/Homebrew/test/cmd/autoremove_spec.rb
Mike McQuaid a883f14b72
autoremove: don't remove formulae that were built from source
When a formula was built from source, it should not be removed by
`brew autoremove` as it will take a while to be installed again.

Fixes https://github.com/Homebrew/brew/issues/17433
2024-06-14 17:26:28 +01:00

44 lines
1.3 KiB
Ruby

# frozen_string_literal: true
require "cmd/autoremove"
require "cmd/shared_examples/args_parse"
RSpec.describe Homebrew::Cmd::Autoremove do
it_behaves_like "parseable arguments"
describe "integration test" do
let(:requested_formula) { Formula["testball1"] }
let(:unused_formula) { Formula["testball2"] }
before do
# Make testball1 poured from a bottle
install_test_formula "testball1"
tab = Tab.for_name("testball1")
tab.poured_from_bottle = true
tab.write
# Make testball2 poured from a bottle and an unused dependency
install_test_formula "testball2"
tab = Tab.for_name("testball2")
tab.installed_on_request = false
tab.installed_as_dependency = true
tab.poured_from_bottle = true
tab.write
end
it "only removes unused dependencies", :integration_test do
expect(requested_formula.any_version_installed?).to be true
expect(unused_formula.any_version_installed?).to be true
# When there are unused dependencies
expect { brew "autoremove" }
.to be_a_success
.and output(/Autoremoving/).to_stdout
.and not_to_output.to_stderr
expect(requested_formula.any_version_installed?).to be true
expect(unused_formula.any_version_installed?).to be false
end
end
end