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?
 | 
			
		||||
 | 
			
		||||
      required_kegs = required.map { |f| kegs_by_name[f].sort_by(&:version).last }
 | 
			
		||||
      return required_kegs, [dependent]
 | 
			
		||||
      return required_kegs, [dependent.to_s]
 | 
			
		||||
    end
 | 
			
		||||
 | 
			
		||||
    nil
 | 
			
		||||
 | 
			
		||||
@ -332,31 +332,54 @@ class InstalledDependantsTests < LinkTests
 | 
			
		||||
    @dependent = setup_test_keg("bar", "1.0")
 | 
			
		||||
  end
 | 
			
		||||
 | 
			
		||||
  def dependencies(deps)
 | 
			
		||||
    tab = Tab.for_keg(@dependent)
 | 
			
		||||
    tab.tabfile = @dependent.join("INSTALL_RECEIPT.json")
 | 
			
		||||
    tab.runtime_dependencies = deps
 | 
			
		||||
  def alter_tab(keg = @dependent)
 | 
			
		||||
    tab = Tab.for_keg(keg)
 | 
			
		||||
    yield tab
 | 
			
		||||
    tab.write
 | 
			
		||||
  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 []
 | 
			
		||||
    assert_empty @keg.installed_dependents
 | 
			
		||||
    assert_nil Keg.find_some_installed_dependents([@keg])
 | 
			
		||||
  end
 | 
			
		||||
 | 
			
		||||
  def test_same_name_different_version
 | 
			
		||||
  def test_same_name_different_version_in_tab
 | 
			
		||||
    dependencies [{ "full_name" => "foo", "version" => "1.1" }]
 | 
			
		||||
    assert_empty @keg.installed_dependents
 | 
			
		||||
    assert_nil Keg.find_some_installed_dependents([@keg])
 | 
			
		||||
  end
 | 
			
		||||
 | 
			
		||||
  def test_different_name_same_version
 | 
			
		||||
  def test_different_name_same_version_in_tab
 | 
			
		||||
    stub_formula_name("baz")
 | 
			
		||||
    dependencies [{ "full_name" => "baz", "version" => @keg.version.to_s }]
 | 
			
		||||
    assert_empty @keg.installed_dependents
 | 
			
		||||
    assert_nil Keg.find_some_installed_dependents([@keg])
 | 
			
		||||
  end
 | 
			
		||||
 | 
			
		||||
  def test_same_name_and_version
 | 
			
		||||
  def test_same_name_and_version_in_tab
 | 
			
		||||
    dependencies [{ "full_name" => "foo", "version" => "1.0" }]
 | 
			
		||||
    assert_equal [@dependent], @keg.installed_dependents
 | 
			
		||||
    assert_equal [[@keg], ["bar 1.0"]], Keg.find_some_installed_dependents([@keg])
 | 
			
		||||
  end
 | 
			
		||||
end
 | 
			
		||||
 | 
			
		||||
@ -48,110 +48,21 @@ class IntegrationCommandTestUninstall < IntegrationCommandTestCase
 | 
			
		||||
  end
 | 
			
		||||
 | 
			
		||||
  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")
 | 
			
		||||
    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_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}",
 | 
			
		||||
        cmd("uninstall", "testball_f1", "--ignore-dependencies")
 | 
			
		||||
        cmd("uninstall", "testball_f1")
 | 
			
		||||
      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
 | 
			
		||||
 | 
			
		||||
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user