aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorAlyssa Ross2016-12-30 16:16:28 +0000
committerAlyssa Ross2016-12-30 16:16:28 +0000
commitbdbc19c614dd9f787c92ce3e0f62180d2238f177 (patch)
tree10c6cec324abf0db9df802f92ffda61fa496314a
parenta69997cab03988f381894b08d4b82d25014e8fed (diff)
downloadbrew-bdbc19c614dd9f787c92ce3e0f62180d2238f177.tar.bz2
tab: implement #reliable_runtime_dependencies?
-rw-r--r--Library/Homebrew/tab.rb20
-rw-r--r--Library/Homebrew/test/tab_test.rb47
2 files changed, 67 insertions, 0 deletions
diff --git a/Library/Homebrew/tab.rb b/Library/Homebrew/tab.rb
index 40626bad1..332237a57 100644
--- a/Library/Homebrew/tab.rb
+++ b/Library/Homebrew/tab.rb
@@ -242,6 +242,26 @@ class Tab < OpenStruct
super || DevelopmentTools.default_compiler
end
+ def homebrew_tag
+ homebrew_version.sub(/\-\d+\-g([a-f0-9]+)(?:\-dirty)?\Z/, "")
+ end
+
+ def parsed_homebrew_version
+ return Version::NULL if homebrew_version.nil?
+ Version.new(homebrew_tag)
+ end
+
+ # Whether there is reliable runtime dependency information in the receipt.
+ def reliable_runtime_dependencies?
+ return false if runtime_dependencies.nil?
+
+ # Homebrew versions prior to 1.1.6 generated incorrect runtime dependency
+ # lists.
+ return false if parsed_homebrew_version < "1.1.6"
+
+ true
+ end
+
def cxxstdlib
# Older tabs won't have these values, so provide sensible defaults
lib = stdlib.to_sym if stdlib
diff --git a/Library/Homebrew/test/tab_test.rb b/Library/Homebrew/test/tab_test.rb
index 5d83b5907..eecb11194 100644
--- a/Library/Homebrew/test/tab_test.rb
+++ b/Library/Homebrew/test/tab_test.rb
@@ -69,6 +69,53 @@ class TabTests < Homebrew::TestCase
assert_predicate tab, :universal?
end
+ def test_homebrew_tag
+ tab = Tab.new(homebrew_version: "1.2.3")
+ assert_equal "1.2.3", tab.homebrew_tag
+
+ tab.homebrew_version = "1.2.4-567-g12789abdf"
+ assert_equal "1.2.4", tab.homebrew_tag
+
+ tab.homebrew_version = "2.0.0-134-gabcdefabc-dirty"
+ assert_equal "2.0.0", tab.homebrew_tag
+ 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_kind_of Version, tab.parsed_homebrew_version
+
+ tab = Tab.new(homebrew_version: "2.0.0-134-gabcdefabc-dirty")
+ assert_equal "2.0.0", tab.parsed_homebrew_version
+ assert_kind_of Version, tab.parsed_homebrew_version
+ end
+
+ def test_reliable_runtime_dependencies?
+ tab = Tab.new
+ refute_predicate tab, :reliable_runtime_dependencies?
+
+ tab.homebrew_version = "1.1.6"
+ refute_predicate tab, :reliable_runtime_dependencies?
+
+ tab.runtime_dependencies = []
+ assert_predicate tab, :reliable_runtime_dependencies?
+
+ tab.homebrew_version = "1.1.5"
+ refute_predicate tab, :reliable_runtime_dependencies?
+
+ tab.homebrew_version = "1.1.7"
+ assert_predicate tab, :reliable_runtime_dependencies?
+
+ tab.homebrew_version = "1.1.10"
+ assert_predicate tab, :reliable_runtime_dependencies?
+
+ tab.runtime_dependencies = [{ "full_name" => "foo", "version" => "1.0" }]
+ assert_predicate tab, :reliable_runtime_dependencies?
+ end
+
def test_cxxstdlib
assert_equal :clang, @tab.cxxstdlib.compiler
assert_equal :libcxx, @tab.cxxstdlib.type