aboutsummaryrefslogtreecommitdiffstats
path: root/Library/Homebrew/test
diff options
context:
space:
mode:
authorMike McQuaid2016-12-31 17:34:55 +0000
committerGitHub2016-12-31 17:34:55 +0000
commit33fbf3f32d4fc0e4c119f070d5ef27c3470a5822 (patch)
tree7eb36f4711d757c2b0512619878e98f5eaba4a9a /Library/Homebrew/test
parent1c9651f04feb8678ee05cb838b16ae7618017bc4 (diff)
parentd998a3fcce579b087dee76c5aeb9956713e81b62 (diff)
downloadbrew-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.rb18
-rw-r--r--Library/Homebrew/test/support/fixtures/receipt.json1
-rw-r--r--Library/Homebrew/test/tab_test.rb52
-rw-r--r--Library/Homebrew/test/uninstall_test.rb1
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" },