mirror of
https://github.com/chromebrew/chromebrew.git
synced 2026-01-07 22:54:11 -05:00
69 lines
2.8 KiB
Ruby
69 lines
2.8 KiB
Ruby
require 'minitest/autorun'
|
|
require_relative '../../commands/remove'
|
|
require_relative '../../lib/const'
|
|
|
|
# Add lib to LOAD_PATH
|
|
$LOAD_PATH << File.join(CREW_LIB_PATH, 'lib')
|
|
|
|
# This is needed to force --no-color mode.
|
|
String.use_color = false
|
|
|
|
class RemoveCommandTest < Minitest::Test
|
|
def test_remove_essential_package
|
|
random_essential_package = CREW_ESSENTIAL_PACKAGES.sample
|
|
puts "Testing the removal of essential package #{random_essential_package}, which was picked at random from one of the essential packages: #{CREW_ESSENTIAL_PACKAGES.join(', ')}. This should fail."
|
|
|
|
assert_raises(SystemExit) do
|
|
# We don't want the output of this command, so we just capture it here and ignore it.
|
|
capture_io { Command.remove(Package.load_package("#{random_essential_package}.rb")) }
|
|
end
|
|
end
|
|
|
|
# We've chosen zstd here because its an essential package we can remove and quickly reinstall without breaking crew.
|
|
# If this changes, and there isn't an essential package we can remove without catastrophic failure, feel free to remove this test entirely.
|
|
def test_force_remove_essential_package
|
|
puts 'Testing the forced removal of essential package zstd. This should succeed.'
|
|
|
|
expected_output = "zstd removed!\n"
|
|
assert_output expected_output, nil do
|
|
Command.remove(Package.load_package('zstd.rb'), force: true)
|
|
end
|
|
# We did just remove an essential package, so let's reinstall that now before it causes any issues.
|
|
system 'crew install zstd', %i[out err] => File::NULL
|
|
end
|
|
|
|
def test_remove_package_with_essential_file
|
|
essential_file = File.join(CREW_LIB_PREFIX, 'libstdc++.so.6')
|
|
puts "Testing the removal of package gcc_build. This should succeed, but essential file #{essential_file} should not be removed."
|
|
|
|
system 'crew install gcc_build', %i[out err] => File::NULL
|
|
capture_io { Command.remove(Package.load_package('gcc_build.rb')) }
|
|
assert File.file?(essential_file), nil
|
|
end
|
|
|
|
def test_remove_normal_package
|
|
puts 'Testing the removal of normal package xxd_standalone. This should succeed.'
|
|
|
|
expected_output = "xxd_standalone removed!\n"
|
|
assert_output expected_output, nil do
|
|
system 'crew install xxd_standalone', %i[out err] => File::NULL
|
|
Command.remove(Package.load_package('xxd_standalone.rb'))
|
|
end
|
|
end
|
|
|
|
def test_verbosely_remove_normal_package
|
|
puts 'Testing the verbose removal of normal package xxd_standalone. This should succeed.'
|
|
|
|
expected_output = <<~EOT
|
|
Removing file #{CREW_PREFIX}/bin/xxd
|
|
Removing file #{CREW_PREFIX}/share/man/man1/xxd.1.zst
|
|
Removing package xxd_standalone from device.json
|
|
xxd_standalone removed!
|
|
EOT
|
|
assert_output expected_output, nil do
|
|
system 'crew install xxd_standalone', %i[out err] => File::NULL
|
|
Command.remove(Package.load_package('xxd_standalone.rb'), verbose: true)
|
|
end
|
|
end
|
|
end
|