tab: implement #reliable_runtime_dependencies?

This commit is contained in:
Alyssa Ross 2016-12-30 16:16:28 +00:00
parent a69997cab0
commit bdbc19c614
2 changed files with 67 additions and 0 deletions

View File

@ -242,6 +242,26 @@ class Tab < OpenStruct
super || DevelopmentTools.default_compiler super || DevelopmentTools.default_compiler
end 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 def cxxstdlib
# Older tabs won't have these values, so provide sensible defaults # Older tabs won't have these values, so provide sensible defaults
lib = stdlib.to_sym if stdlib lib = stdlib.to_sym if stdlib

View File

@ -69,6 +69,53 @@ class TabTests < Homebrew::TestCase
assert_predicate tab, :universal? assert_predicate tab, :universal?
end 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 def test_cxxstdlib
assert_equal :clang, @tab.cxxstdlib.compiler assert_equal :clang, @tab.cxxstdlib.compiler
assert_equal :libcxx, @tab.cxxstdlib.type assert_equal :libcxx, @tab.cxxstdlib.type