aboutsummaryrefslogtreecommitdiffstats
path: root/Library
diff options
context:
space:
mode:
authorMartin Afanasjew2015-12-15 10:37:14 +0100
committerMartin Afanasjew2015-12-17 13:50:38 +0100
commit0f9abe57ea819c63015103ed67de2ecd49398439 (patch)
tree52f1addff0251d6d12668cbfa27d349f04fb93b0 /Library
parent10f066197e4313019ec10781850b1253b2ccebec (diff)
downloadbrew-0f9abe57ea819c63015103ed67de2ecd49398439.tar.bz2
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.
Diffstat (limited to 'Library')
-rw-r--r--Library/Homebrew/test/test_dependency.rb45
1 files changed, 45 insertions, 0 deletions
diff --git a/Library/Homebrew/test/test_dependency.rb b/Library/Homebrew/test/test_dependency.rb
index f58a22fd8..4ba7033d9 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")