From 0f9abe57ea819c63015103ed67de2ecd49398439 Mon Sep 17 00:00:00 2001 From: Martin Afanasjew Date: Tue, 15 Dec 2015 10:37:14 +0100 Subject: [PATCH] tests: add (failing) tests for merging deps tags The general idea is that merging multiple dependencies of the same name should produce the strictest tag instead of a (meaningless) union of the reserved tags. For example, if a dependency is both a `:recommended` and an `:optional` dependency at different points in the dependency tree, the resulting merged dependency should be tagged as `:recommended`. Handle all other reserved tags in the same spirit. --- Library/Homebrew/test/test_dependency.rb | 45 ++++++++++++++++++++++++ 1 file changed, 45 insertions(+) diff --git a/Library/Homebrew/test/test_dependency.rb b/Library/Homebrew/test/test_dependency.rb index f58a22fd87..4ba7033d9c 100644 --- a/Library/Homebrew/test/test_dependency.rb +++ b/Library/Homebrew/test/test_dependency.rb @@ -58,6 +58,51 @@ class DependencyTests < Homebrew::TestCase refute_includes xyz_named_dep.option_names, "foo2" end + def test_merges_necessity_tags + required_dep = Dependency.new("foo") + recommended_dep = Dependency.new("foo", [:recommended]) + optional_dep = Dependency.new("foo", [:optional]) + + deps = Dependency.merge_repeats([required_dep, recommended_dep]) + assert_equal deps.count, 1 + assert_predicate deps.first, :required? + refute_predicate deps.first, :recommended? + refute_predicate deps.first, :optional? + + deps = Dependency.merge_repeats([required_dep, optional_dep]) + assert_equal deps.count, 1 + assert_predicate deps.first, :required? + refute_predicate deps.first, :recommended? + refute_predicate deps.first, :optional? + + deps = Dependency.merge_repeats([recommended_dep, optional_dep]) + assert_equal deps.count, 1 + refute_predicate deps.first, :required? + assert_predicate deps.first, :recommended? + refute_predicate deps.first, :optional? + end + + def test_merges_temporality_tags + normal_dep = Dependency.new("foo") + build_dep = Dependency.new("foo", [:build]) + run_dep = Dependency.new("foo", [:run]) + + deps = Dependency.merge_repeats([normal_dep, build_dep]) + assert_equal deps.count, 1 + refute_predicate deps.first, :build? + refute_predicate deps.first, :run? + + deps = Dependency.merge_repeats([normal_dep, run_dep]) + assert_equal deps.count, 1 + refute_predicate deps.first, :build? + refute_predicate deps.first, :run? + + deps = Dependency.merge_repeats([build_dep, run_dep]) + assert_equal deps.count, 1 + refute_predicate deps.first, :build? + refute_predicate deps.first, :run? + end + def test_equality foo1 = Dependency.new("foo") foo2 = Dependency.new("foo")