aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--Library/Homebrew/dependable.rb4
-rw-r--r--Library/Homebrew/dependencies.rb20
-rw-r--r--Library/Homebrew/test/test_dependencies.rb14
3 files changed, 38 insertions, 0 deletions
diff --git a/Library/Homebrew/dependable.rb b/Library/Homebrew/dependable.rb
index 2a1d7d880..50ff5c90f 100644
--- a/Library/Homebrew/dependable.rb
+++ b/Library/Homebrew/dependable.rb
@@ -15,6 +15,10 @@ module Dependable
tags.include? :recommended
end
+ def required?
+ !build? && !optional? && !recommended?
+ end
+
def options
Options.coerce(tags - RESERVED_TAGS)
end
diff --git a/Library/Homebrew/dependencies.rb b/Library/Homebrew/dependencies.rb
index 76d285b56..9d5c3dede 100644
--- a/Library/Homebrew/dependencies.rb
+++ b/Library/Homebrew/dependencies.rb
@@ -26,4 +26,24 @@ class Dependencies
@deps
end
alias_method :to_ary, :to_a
+
+ def optional
+ select(&:optional?)
+ end
+
+ def recommended
+ select(&:recommended?)
+ end
+
+ def build
+ select(&:build?)
+ end
+
+ def required
+ select(&:required?)
+ end
+
+ def default
+ build + required + recommended
+ end
end
diff --git a/Library/Homebrew/test/test_dependencies.rb b/Library/Homebrew/test/test_dependencies.rb
index d0d078318..ee7574c2b 100644
--- a/Library/Homebrew/test/test_dependencies.rb
+++ b/Library/Homebrew/test/test_dependencies.rb
@@ -45,4 +45,18 @@ class DependenciesTests < Test::Unit::TestCase
@deps << dep
assert_equal [dep], @deps.to_ary
end
+
+ def test_type_helpers
+ foo = Dependency.new("foo")
+ bar = Dependency.new("bar", [:optional])
+ baz = Dependency.new("baz", [:build])
+ qux = Dependency.new("qux", [:recommended])
+ quux = Dependency.new("quux")
+ @deps << foo << bar << baz << qux << quux
+ assert_equal [foo, quux], @deps.required
+ assert_equal [bar], @deps.optional
+ assert_equal [baz], @deps.build
+ assert_equal [qux], @deps.recommended
+ assert_equal [foo, baz, quux, qux].sort_by(&:name), @deps.default.sort_by(&:name)
+ end
end