diff options
| author | Martin Afanasjew | 2015-12-15 10:37:14 +0100 |
|---|---|---|
| committer | Martin Afanasjew | 2015-12-17 13:50:38 +0100 |
| commit | 0f9abe57ea819c63015103ed67de2ecd49398439 (patch) | |
| tree | 52f1addff0251d6d12668cbfa27d349f04fb93b0 /Library | |
| parent | 10f066197e4313019ec10781850b1253b2ccebec (diff) | |
| download | brew-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.rb | 45 |
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") |
