aboutsummaryrefslogtreecommitdiffstats
path: root/Library/Homebrew/test
diff options
context:
space:
mode:
authorJack Nagel2012-10-24 18:17:43 -0500
committerJack Nagel2012-10-25 14:28:53 -0500
commitd1f754c02e5ef36de70ac3cb7ad7669a90ec9295 (patch)
treed8b3626586e50ebee25c6666a061c8d45df6c8c4 /Library/Homebrew/test
parenta1af5a6cc321d083d718f86d8821217634bff2c6 (diff)
downloadbrew-d1f754c02e5ef36de70ac3cb7ad7669a90ec9295.tar.bz2
Allow requirements to record tags
To allow depends_on :x11 => :optional and friends to work as expected, make requirements record any tags and add special handling to the X11Dependency to record both a minimum version and additional tags. Signed-off-by: Jack Nagel <jacknagel@gmail.com>
Diffstat (limited to 'Library/Homebrew/test')
-rw-r--r--Library/Homebrew/test/test_comparableset.rb1
-rw-r--r--Library/Homebrew/test/test_dependencies.rb36
-rw-r--r--Library/Homebrew/test/test_requirements.rb (renamed from Library/Homebrew/test/test_external_deps.rb)62
3 files changed, 97 insertions, 2 deletions
diff --git a/Library/Homebrew/test/test_comparableset.rb b/Library/Homebrew/test/test_comparableset.rb
index d39ad51d6..39f9b6f32 100644
--- a/Library/Homebrew/test/test_comparableset.rb
+++ b/Library/Homebrew/test/test_comparableset.rb
@@ -1,5 +1,6 @@
require 'testing_env'
require 'extend/set'
+require 'dependencies'
class ComparableSetTests < Test::Unit::TestCase
def setup
diff --git a/Library/Homebrew/test/test_dependencies.rb b/Library/Homebrew/test/test_dependencies.rb
new file mode 100644
index 000000000..4758aad0a
--- /dev/null
+++ b/Library/Homebrew/test/test_dependencies.rb
@@ -0,0 +1,36 @@
+require 'testing_env'
+require 'test/testball'
+require 'dependencies'
+
+class DependencyCollector
+ def find_dependency(name)
+ deps.find { |dep| dep.name == name }
+ end
+end
+
+class DependencyTests < Test::Unit::TestCase
+ def setup
+ @d = DependencyCollector.new
+ end
+
+ def test_dependency_creation
+ @d.add 'foo' => :build
+ @d.add 'bar' => ['--universal', :optional]
+ assert_not_nil @d.find_dependency('foo')
+ assert_equal 2, @d.find_dependency('bar').tags.length
+ end
+
+ def test_dependency_tags
+ assert Dependency.new('foo', :build).build?
+ assert Dependency.new('foo', [:build, :optional]).optional?
+ assert Dependency.new('foo', [:universal]).options.include? '--universal'
+ assert_empty Dependency.new('foo').tags
+ end
+
+ def test_no_duplicate_dependencies
+ @d.add 'foo'
+ @d.add 'foo' => :build
+ assert_equal 1, @d.deps.length
+ assert_empty @d.find_dependency('foo').tags
+ end
+end
diff --git a/Library/Homebrew/test/test_external_deps.rb b/Library/Homebrew/test/test_requirements.rb
index b4ca0f6e6..c8a8e1ba8 100644
--- a/Library/Homebrew/test/test_external_deps.rb
+++ b/Library/Homebrew/test/test_requirements.rb
@@ -1,8 +1,66 @@
require 'testing_env'
-require 'extend/string'
require 'test/testball'
-require 'formula_installer'
+require 'dependencies'
+class DependencyCollector
+ def find_requirement(klass)
+ requirements.find do |req|
+ klass === req
+ end
+ end
+end
+
+class RequirementTests < Test::Unit::TestCase
+ def setup
+ @d = DependencyCollector.new
+ end
+
+ def test_requirement_creation
+ @d.add :x11
+ assert_not_nil @d.find_requirement(X11Dependency)
+ end
+
+
+ def test_no_duplicate_requirements
+ 2.times { @d.add :x11 }
+ assert_equal 1, @d.requirements.length
+ end
+end
+
+class RequirementTagTests < Test::Unit::TestCase
+ def setup
+ @d = DependencyCollector.new
+ end
+
+ def test_requirement_tags
+ @d.add :x11 => '2.5.1'
+ @d.add :xcode => :build
+ assert_empty @d.find_requirement(X11Dependency).tags
+ assert @d.find_requirement(XcodeDependency).build?
+ end
+
+ def test_x11_no_tag
+ @d.add :x11
+ assert_empty @d.find_requirement(X11Dependency).tags
+ end
+
+ def test_x11_min_version
+ @d.add :x11 => '2.5.1'
+ assert_equal '2.5.1', @d.find_requirement(X11Dependency).min_version
+ end
+
+ def test_x11_tag
+ @d.add :x11 => :optional
+ assert @d.find_requirement(X11Dependency).optional?
+ end
+
+ def test_x11_min_version_and_tag
+ @d.add :x11 => ['2.5.1', :optional]
+ dep = @d.find_requirement(X11Dependency)
+ assert_equal '2.5.1', dep.min_version
+ assert dep.optional?
+ end
+end
class ExternalDepsTests < Test::Unit::TestCase
def check_deps_fail specs