diff options
| author | Jack Nagel | 2012-10-24 18:17:43 -0500 |
|---|---|---|
| committer | Jack Nagel | 2012-10-25 14:28:53 -0500 |
| commit | d1f754c02e5ef36de70ac3cb7ad7669a90ec9295 (patch) | |
| tree | d8b3626586e50ebee25c6666a061c8d45df6c8c4 /Library/Homebrew/test | |
| parent | a1af5a6cc321d083d718f86d8821217634bff2c6 (diff) | |
| download | brew-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.rb | 1 | ||||
| -rw-r--r-- | Library/Homebrew/test/test_dependencies.rb | 36 | ||||
| -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 |
