uninstall: go easier on the integration tests
This commit is contained in:
parent
3702e561d6
commit
bb30b01d5d
@ -116,7 +116,7 @@ class Keg
|
|||||||
next unless required.any?
|
next unless required.any?
|
||||||
|
|
||||||
required_kegs = required.map { |f| kegs_by_name[f].sort_by(&:version).last }
|
required_kegs = required.map { |f| kegs_by_name[f].sort_by(&:version).last }
|
||||||
return required_kegs, [dependent]
|
return required_kegs, [dependent.to_s]
|
||||||
end
|
end
|
||||||
|
|
||||||
nil
|
nil
|
||||||
|
|||||||
@ -332,31 +332,54 @@ class InstalledDependantsTests < LinkTests
|
|||||||
@dependent = setup_test_keg("bar", "1.0")
|
@dependent = setup_test_keg("bar", "1.0")
|
||||||
end
|
end
|
||||||
|
|
||||||
def dependencies(deps)
|
def alter_tab(keg = @dependent)
|
||||||
tab = Tab.for_keg(@dependent)
|
tab = Tab.for_keg(keg)
|
||||||
tab.tabfile = @dependent.join("INSTALL_RECEIPT.json")
|
yield tab
|
||||||
tab.runtime_dependencies = deps
|
|
||||||
tab.write
|
tab.write
|
||||||
end
|
end
|
||||||
|
|
||||||
def test_no_dependencies
|
def dependencies(deps)
|
||||||
|
alter_tab do |tab|
|
||||||
|
tab.tabfile = @dependent.join("INSTALL_RECEIPT.json")
|
||||||
|
tab.runtime_dependencies = deps
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
|
def test_no_dependencies_anywhere
|
||||||
|
dependencies nil
|
||||||
|
assert_empty @keg.installed_dependents
|
||||||
|
assert_nil Keg.find_some_installed_dependents([@keg])
|
||||||
|
end
|
||||||
|
|
||||||
|
def test_missing_formula_dependency
|
||||||
|
dependencies nil
|
||||||
|
Formula["bar"].class.depends_on "foo"
|
||||||
|
assert_empty @keg.installed_dependents
|
||||||
|
assert_equal [[@keg], ["bar"]], Keg.find_some_installed_dependents([@keg])
|
||||||
|
end
|
||||||
|
|
||||||
|
def test_empty_dependencies_in_tab
|
||||||
dependencies []
|
dependencies []
|
||||||
assert_empty @keg.installed_dependents
|
assert_empty @keg.installed_dependents
|
||||||
|
assert_nil Keg.find_some_installed_dependents([@keg])
|
||||||
end
|
end
|
||||||
|
|
||||||
def test_same_name_different_version
|
def test_same_name_different_version_in_tab
|
||||||
dependencies [{ "full_name" => "foo", "version" => "1.1" }]
|
dependencies [{ "full_name" => "foo", "version" => "1.1" }]
|
||||||
assert_empty @keg.installed_dependents
|
assert_empty @keg.installed_dependents
|
||||||
|
assert_nil Keg.find_some_installed_dependents([@keg])
|
||||||
end
|
end
|
||||||
|
|
||||||
def test_different_name_same_version
|
def test_different_name_same_version_in_tab
|
||||||
stub_formula_name("baz")
|
stub_formula_name("baz")
|
||||||
dependencies [{ "full_name" => "baz", "version" => @keg.version.to_s }]
|
dependencies [{ "full_name" => "baz", "version" => @keg.version.to_s }]
|
||||||
assert_empty @keg.installed_dependents
|
assert_empty @keg.installed_dependents
|
||||||
|
assert_nil Keg.find_some_installed_dependents([@keg])
|
||||||
end
|
end
|
||||||
|
|
||||||
def test_same_name_and_version
|
def test_same_name_and_version_in_tab
|
||||||
dependencies [{ "full_name" => "foo", "version" => "1.0" }]
|
dependencies [{ "full_name" => "foo", "version" => "1.0" }]
|
||||||
assert_equal [@dependent], @keg.installed_dependents
|
assert_equal [@dependent], @keg.installed_dependents
|
||||||
|
assert_equal [[@keg], ["bar 1.0"]], Keg.find_some_installed_dependents([@keg])
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|||||||
@ -48,110 +48,21 @@ class IntegrationCommandTestUninstall < IntegrationCommandTestCase
|
|||||||
end
|
end
|
||||||
|
|
||||||
def test_uninstall
|
def test_uninstall
|
||||||
cmd("install", testball)
|
|
||||||
assert_match "Uninstalling testball", cmd("uninstall", "--force", testball)
|
|
||||||
assert_empty Formulary.factory(testball).installed_kegs
|
|
||||||
end
|
|
||||||
|
|
||||||
def test_uninstall_with_unrelated_missing_deps_in_tab
|
|
||||||
setup_test_formula "testball"
|
|
||||||
run_as_not_developer do
|
|
||||||
cmd("install", testball)
|
|
||||||
cmd("install", "testball_f2")
|
|
||||||
cmd("uninstall", "--ignore-dependencies", "testball_f1")
|
|
||||||
cmd("uninstall", testball)
|
|
||||||
end
|
|
||||||
end
|
|
||||||
|
|
||||||
def test_uninstall_with_unrelated_missing_deps_not_in_tab
|
|
||||||
setup_test_formula "testball"
|
|
||||||
run_as_not_developer do
|
|
||||||
cmd("install", testball)
|
|
||||||
cmd("install", "testball_f2")
|
|
||||||
|
|
||||||
f2_keg = f2.installed_kegs.first
|
|
||||||
f2_tab = Tab.for_keg(f2_keg)
|
|
||||||
f2_tab.runtime_dependencies = nil
|
|
||||||
f2_tab.write
|
|
||||||
|
|
||||||
cmd("uninstall", "--ignore-dependencies", "testball_f1")
|
|
||||||
cmd("uninstall", testball)
|
|
||||||
end
|
|
||||||
end
|
|
||||||
|
|
||||||
def test_uninstall_leaving_dependents
|
|
||||||
cmd("install", "testball_f2")
|
cmd("install", "testball_f2")
|
||||||
run_as_not_developer do
|
run_as_not_developer do
|
||||||
|
|
||||||
assert_match "Refusing to uninstall",
|
assert_match "Refusing to uninstall",
|
||||||
cmd_fail("uninstall", "testball_f1")
|
cmd_fail("uninstall", "testball_f1")
|
||||||
refute_empty f1.installed_kegs
|
refute_empty f1.installed_kegs
|
||||||
|
|
||||||
assert_match "Uninstalling #{f2.rack}",
|
assert_match "Uninstalling #{f2.rack}",
|
||||||
cmd("uninstall", "testball_f2")
|
cmd("uninstall", "testball_f2")
|
||||||
assert_empty f2.installed_kegs
|
assert_empty f2.installed_kegs
|
||||||
end
|
|
||||||
end
|
|
||||||
|
|
||||||
def test_uninstall_leaving_dependents_no_runtime_dependencies_in_tab
|
|
||||||
cmd("install", "testball_f2")
|
|
||||||
|
|
||||||
f2_keg = f2.installed_kegs.first
|
|
||||||
f2_tab = Tab.for_keg(f2_keg)
|
|
||||||
f2_tab.runtime_dependencies = nil
|
|
||||||
f2_tab.write
|
|
||||||
|
|
||||||
run_as_not_developer do
|
|
||||||
assert_match "Refusing to uninstall",
|
|
||||||
cmd_fail("uninstall", "testball_f1")
|
|
||||||
refute_empty f1.installed_kegs
|
|
||||||
assert_match "Uninstalling #{f2.rack}",
|
|
||||||
cmd("uninstall", "testball_f2")
|
|
||||||
assert_empty f2.installed_kegs
|
|
||||||
end
|
|
||||||
end
|
|
||||||
|
|
||||||
def test_uninstall_force_leaving_dependents
|
|
||||||
cmd("install", "testball_f2")
|
|
||||||
run_as_not_developer do
|
|
||||||
assert_match "Refusing to uninstall",
|
|
||||||
cmd_fail("uninstall", "testball_f1", "--force")
|
|
||||||
refute_empty f1.installed_kegs
|
|
||||||
assert_match "Uninstalling testball_f2",
|
|
||||||
cmd("uninstall", "testball_f2", "--force")
|
|
||||||
assert_empty f2.installed_kegs
|
|
||||||
end
|
|
||||||
end
|
|
||||||
|
|
||||||
def test_uninstall_ignore_dependencies_leaving_dependents
|
|
||||||
cmd("install", "testball_f2")
|
|
||||||
run_as_not_developer do
|
|
||||||
assert_match "Uninstalling #{f1.rack}",
|
assert_match "Uninstalling #{f1.rack}",
|
||||||
cmd("uninstall", "testball_f1", "--ignore-dependencies")
|
cmd("uninstall", "testball_f1")
|
||||||
assert_empty f1.installed_kegs
|
assert_empty f1.installed_kegs
|
||||||
end
|
|
||||||
end
|
|
||||||
|
|
||||||
def test_uninstall_leaving_dependents_developer
|
|
||||||
cmd("install", "testball_f2")
|
|
||||||
assert_match "Uninstalling #{f1.rack}",
|
|
||||||
cmd("uninstall", "testball_f1")
|
|
||||||
assert_empty f1.installed_kegs
|
|
||||||
end
|
|
||||||
|
|
||||||
def test_uninstall_dependent_first
|
|
||||||
cmd("install", "testball_f2")
|
|
||||||
run_as_not_developer do
|
|
||||||
assert_match "Uninstalling #{f1.rack}",
|
|
||||||
cmd("uninstall", "testball_f2", "testball_f1")
|
|
||||||
assert_empty f1.installed_kegs
|
|
||||||
end
|
|
||||||
end
|
|
||||||
|
|
||||||
def test_uninstall_dependent_last
|
|
||||||
cmd("install", "testball_f2")
|
|
||||||
run_as_not_developer do
|
|
||||||
assert_match "Uninstalling #{f2.rack}",
|
|
||||||
cmd("uninstall", "testball_f1", "testball_f2")
|
|
||||||
assert_empty f2.installed_kegs
|
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user