diff options
| author | Mike McQuaid | 2016-12-31 17:34:55 +0000 |
|---|---|---|
| committer | GitHub | 2016-12-31 17:34:55 +0000 |
| commit | 33fbf3f32d4fc0e4c119f070d5ef27c3470a5822 (patch) | |
| tree | 7eb36f4711d757c2b0512619878e98f5eaba4a9a /Library/Homebrew/test | |
| parent | 1c9651f04feb8678ee05cb838b16ae7618017bc4 (diff) | |
| parent | d998a3fcce579b087dee76c5aeb9956713e81b62 (diff) | |
| download | brew-33fbf3f32d4fc0e4c119f070d5ef27c3470a5822.tar.bz2 | |
Merge pull request #1750 from alyssais/fallback_dependencies
keg: fall back for dependencies of buggy tabs
Diffstat (limited to 'Library/Homebrew/test')
| -rw-r--r-- | Library/Homebrew/test/keg_test.rb | 18 | ||||
| -rw-r--r-- | Library/Homebrew/test/support/fixtures/receipt.json | 1 | ||||
| -rw-r--r-- | Library/Homebrew/test/tab_test.rb | 52 | ||||
| -rw-r--r-- | Library/Homebrew/test/uninstall_test.rb | 1 |
4 files changed, 71 insertions, 1 deletions
diff --git a/Library/Homebrew/test/keg_test.rb b/Library/Homebrew/test/keg_test.rb index eeead64a0..45d63aa95 100644 --- a/Library/Homebrew/test/keg_test.rb +++ b/Library/Homebrew/test/keg_test.rb @@ -348,13 +348,22 @@ class InstalledDependantsTests < LinkTestCase tab.write end - def dependencies(deps) + # 1.1.6 is the earliest version of Homebrew that generates correct runtime + # dependency lists in tabs. + def dependencies(deps, homebrew_version: "1.1.6") alter_tab do |tab| + tab.homebrew_version = homebrew_version tab.tabfile = @dependent.join("INSTALL_RECEIPT.json") tab.runtime_dependencies = deps end end + def unreliable_dependencies(deps) + # 1.1.5 is (hopefully!) the last version of Homebrew that generates + # incorrect runtime dependency lists in tabs. + dependencies(deps, homebrew_version: "1.1.5") + end + # Test with a keg whose formula isn't known. # This can happen if e.g. a formula is installed # from a file path or URL. @@ -426,4 +435,11 @@ class InstalledDependantsTests < LinkTestCase assert_equal [@dependent], @keg.installed_dependents assert_equal [[@keg], ["bar 1.0"]], Keg.find_some_installed_dependents([@keg]) end + + def test_fallback_for_old_versions + unreliable_dependencies [{ "full_name" => "baz", "version" => "1.0" }] + Formula["bar"].class.depends_on "foo" + assert_empty @keg.installed_dependents + assert_equal [[@keg], ["bar"]], Keg.find_some_installed_dependents([@keg]) + end end diff --git a/Library/Homebrew/test/support/fixtures/receipt.json b/Library/Homebrew/test/support/fixtures/receipt.json index b20626bbe..a57d6d80d 100644 --- a/Library/Homebrew/test/support/fixtures/receipt.json +++ b/Library/Homebrew/test/support/fixtures/receipt.json @@ -1,4 +1,5 @@ { + "homebrew_version": "1.1.6", "used_options": [ "--with-foo", "--without-bar" diff --git a/Library/Homebrew/test/tab_test.rb b/Library/Homebrew/test/tab_test.rb index 5d83b5907..526e1f79e 100644 --- a/Library/Homebrew/test/tab_test.rb +++ b/Library/Homebrew/test/tab_test.rb @@ -32,6 +32,11 @@ class TabTests < Homebrew::TestCase def test_defaults tab = Tab.empty + + # FIXME: remove this line after Homebrew 1.1.6 is released. + # See https://github.com/Homebrew/brew/pull/1750#discussion_r94254622 + tab.homebrew_version = "1.1.6" + assert_empty tab.unused_options assert_empty tab.used_options assert_nil tab.changed_files @@ -69,6 +74,49 @@ class TabTests < Homebrew::TestCase assert_predicate tab, :universal? end + def test_parsed_homebrew_version + tab = Tab.new + assert_same Version::NULL, tab.parsed_homebrew_version + + tab = Tab.new(homebrew_version: "1.2.3") + assert_equal "1.2.3", tab.parsed_homebrew_version + assert tab.parsed_homebrew_version < "1.2.3-1-g12789abdf" + assert_kind_of Version, tab.parsed_homebrew_version + + tab.homebrew_version = "1.2.4-567-g12789abdf" + assert tab.parsed_homebrew_version > "1.2.4" + assert tab.parsed_homebrew_version > "1.2.4-566-g21789abdf" + assert tab.parsed_homebrew_version < "1.2.4-568-g01789abdf" + + tab = Tab.new(homebrew_version: "2.0.0-134-gabcdefabc-dirty") + assert tab.parsed_homebrew_version > "2.0.0" + assert tab.parsed_homebrew_version > "2.0.0-133-g21789abdf" + assert tab.parsed_homebrew_version < "2.0.0-135-g01789abdf" + end + + def test_runtime_dependencies + tab = Tab.new + assert_nil tab.runtime_dependencies + + tab.homebrew_version = "1.1.6" + assert_nil tab.runtime_dependencies + + tab.runtime_dependencies = [] + refute_nil tab.runtime_dependencies + + tab.homebrew_version = "1.1.5" + assert_nil tab.runtime_dependencies + + tab.homebrew_version = "1.1.7" + refute_nil tab.runtime_dependencies + + tab.homebrew_version = "1.1.10" + refute_nil tab.runtime_dependencies + + tab.runtime_dependencies = [{ "full_name" => "foo", "version" => "1.0" }] + refute_nil tab.runtime_dependencies + end + def test_cxxstdlib assert_equal :clang, @tab.cxxstdlib.compiler assert_equal :libcxx, @tab.cxxstdlib.type @@ -151,6 +199,10 @@ class TabTests < Homebrew::TestCase stdlib = :libcxx tab = Tab.create(f, compiler, stdlib) + # FIXME: remove this line after Homebrew 1.1.6 is released. + # See https://github.com/Homebrew/brew/pull/1750#discussion_r94254622 + tab.homebrew_version = "1.1.6" + runtime_dependencies = [ { "full_name" => "bar", "version" => "2.0" }, { "full_name" => "user/repo/from_tap", "version" => "1.0" }, diff --git a/Library/Homebrew/test/uninstall_test.rb b/Library/Homebrew/test/uninstall_test.rb index 5c53988f2..e7849178b 100644 --- a/Library/Homebrew/test/uninstall_test.rb +++ b/Library/Homebrew/test/uninstall_test.rb @@ -12,6 +12,7 @@ class UninstallTests < Homebrew::TestCase [@dependency, @dependent].each { |f| f.installed_prefix.mkpath } tab = Tab.empty + tab.homebrew_version = "1.1.6" tab.tabfile = @dependent.installed_prefix/Tab::FILENAME tab.runtime_dependencies = [ { "full_name" => "dependency", "version" => "1" }, |
