diff options
| author | Alyssa Ross | 2016-12-30 16:16:28 +0000 | 
|---|---|---|
| committer | Alyssa Ross | 2016-12-30 16:16:28 +0000 | 
| commit | bdbc19c614dd9f787c92ce3e0f62180d2238f177 (patch) | |
| tree | 10c6cec324abf0db9df802f92ffda61fa496314a | |
| parent | a69997cab03988f381894b08d4b82d25014e8fed (diff) | |
| download | brew-bdbc19c614dd9f787c92ce3e0f62180d2238f177.tar.bz2 | |
tab: implement #reliable_runtime_dependencies?
| -rw-r--r-- | Library/Homebrew/tab.rb | 20 | ||||
| -rw-r--r-- | Library/Homebrew/test/tab_test.rb | 47 | 
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  | 
