Split up dependency test coverage
The DependencyCollector tests are really integration tests, while the rest are closer to real unit tests. Split them up so that the tests can be run in isolation on a per-class basis.
This commit is contained in:
parent
e629f14d56
commit
fe4f39dcee
@ -1,40 +1,6 @@
|
||||
require 'testing_env'
|
||||
require 'test/testball'
|
||||
require 'dependencies'
|
||||
|
||||
module DependencyCollectorTestExtension
|
||||
def find_dependency(name)
|
||||
deps.find { |dep| dep.name == name }
|
||||
end
|
||||
end
|
||||
|
||||
class DependencyCollectorTests < Test::Unit::TestCase
|
||||
def setup
|
||||
@d = DependencyCollector.new.extend(DependencyCollectorTestExtension)
|
||||
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.count
|
||||
assert_empty @d.find_dependency('foo').tags
|
||||
end
|
||||
end
|
||||
|
||||
class DependenciesTests < Test::Unit::TestCase
|
||||
def setup
|
||||
@deps = Dependencies.new
|
||||
@ -71,52 +37,3 @@ class DependenciesTests < Test::Unit::TestCase
|
||||
assert_instance_of Array, @deps.to_ary
|
||||
end
|
||||
end
|
||||
|
||||
class DependableTests < Test::Unit::TestCase
|
||||
def setup
|
||||
@tags = ["foo", "bar", :build]
|
||||
@dep = Struct.new(:tags).new(@tags).extend(Dependable)
|
||||
end
|
||||
|
||||
def test_options
|
||||
assert_equal %w{--foo --bar}.sort, @dep.options.sort
|
||||
end
|
||||
|
||||
def test_interrogation
|
||||
assert @dep.build?
|
||||
assert !@dep.optional?
|
||||
assert !@dep.recommended?
|
||||
end
|
||||
end
|
||||
|
||||
class DependencyTests < Test::Unit::TestCase
|
||||
def test_accepts_single_tag
|
||||
dep = Dependency.new("foo", "bar")
|
||||
assert_equal %w{bar}, dep.tags
|
||||
end
|
||||
|
||||
def test_accepts_multiple_tags
|
||||
dep = Dependency.new("foo", %w{bar baz})
|
||||
assert_equal %w{bar baz}.sort, dep.tags.sort
|
||||
end
|
||||
|
||||
def test_preserves_symbol_tags
|
||||
dep = Dependency.new("foo", :build)
|
||||
assert_equal [:build], dep.tags
|
||||
end
|
||||
|
||||
def test_accepts_symbol_and_string_tags
|
||||
dep = Dependency.new("foo", [:build, "bar"])
|
||||
assert_equal [:build, "bar"], dep.tags
|
||||
end
|
||||
|
||||
def test_equality
|
||||
foo1 = Dependency.new("foo")
|
||||
foo2 = Dependency.new("foo")
|
||||
bar = Dependency.new("bar")
|
||||
assert_equal foo1, foo2
|
||||
assert foo1.eql?(foo2)
|
||||
assert_not_equal foo1, bar
|
||||
assert !foo1.eql?(bar)
|
||||
end
|
||||
end
|
||||
|
51
Library/Homebrew/test/test_dependency.rb
Normal file
51
Library/Homebrew/test/test_dependency.rb
Normal file
@ -0,0 +1,51 @@
|
||||
require 'testing_env'
|
||||
require 'dependencies'
|
||||
|
||||
class DependableTests < Test::Unit::TestCase
|
||||
def setup
|
||||
@tags = ["foo", "bar", :build]
|
||||
@dep = Struct.new(:tags).new(@tags).extend(Dependable)
|
||||
end
|
||||
|
||||
def test_options
|
||||
assert_equal %w{--foo --bar}.sort, @dep.options.sort
|
||||
end
|
||||
|
||||
def test_interrogation
|
||||
assert @dep.build?
|
||||
assert !@dep.optional?
|
||||
assert !@dep.recommended?
|
||||
end
|
||||
end
|
||||
|
||||
class DependencyTests < Test::Unit::TestCase
|
||||
def test_accepts_single_tag
|
||||
dep = Dependency.new("foo", "bar")
|
||||
assert_equal %w{bar}, dep.tags
|
||||
end
|
||||
|
||||
def test_accepts_multiple_tags
|
||||
dep = Dependency.new("foo", %w{bar baz})
|
||||
assert_equal %w{bar baz}.sort, dep.tags.sort
|
||||
end
|
||||
|
||||
def test_preserves_symbol_tags
|
||||
dep = Dependency.new("foo", :build)
|
||||
assert_equal [:build], dep.tags
|
||||
end
|
||||
|
||||
def test_accepts_symbol_and_string_tags
|
||||
dep = Dependency.new("foo", [:build, "bar"])
|
||||
assert_equal [:build, "bar"], dep.tags
|
||||
end
|
||||
|
||||
def test_equality
|
||||
foo1 = Dependency.new("foo")
|
||||
foo2 = Dependency.new("foo")
|
||||
bar = Dependency.new("bar")
|
||||
assert_equal foo1, foo2
|
||||
assert foo1.eql?(foo2)
|
||||
assert_not_equal foo1, bar
|
||||
assert !foo1.eql?(bar)
|
||||
end
|
||||
end
|
@ -1,18 +1,41 @@
|
||||
require 'testing_env'
|
||||
require 'test/testball'
|
||||
require 'dependencies'
|
||||
require 'extend/set'
|
||||
|
||||
module DependencyCollectorTestExtension
|
||||
def find_dependency(name)
|
||||
deps.find { |dep| dep.name == name }
|
||||
end
|
||||
|
||||
class DependencyCollector
|
||||
def find_requirement(klass)
|
||||
requirements.find do |req|
|
||||
klass === req
|
||||
end
|
||||
requirements.find { |req| klass === req }
|
||||
end
|
||||
end
|
||||
|
||||
class RequirementTests < Test::Unit::TestCase
|
||||
class DependencyCollectorTests < Test::Unit::TestCase
|
||||
def setup
|
||||
@d = DependencyCollector.new
|
||||
@d = DependencyCollector.new.extend(DependencyCollectorTestExtension)
|
||||
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.count
|
||||
assert_empty @d.find_dependency('foo').tags
|
||||
end
|
||||
|
||||
def test_requirement_creation
|
||||
@ -20,17 +43,10 @@ class RequirementTests < Test::Unit::TestCase
|
||||
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'
|
28
Library/Homebrew/test/test_requirement.rb
Normal file
28
Library/Homebrew/test/test_requirement.rb
Normal file
@ -0,0 +1,28 @@
|
||||
require 'testing_env'
|
||||
require 'dependencies'
|
||||
|
||||
class RequirementTests < Test::Unit::TestCase
|
||||
def test_accepts_single_tag
|
||||
dep = Requirement.new("bar")
|
||||
assert_equal %w{bar}, dep.tags
|
||||
end
|
||||
|
||||
def test_accepts_multiple_tags
|
||||
dep = Requirement.new(%w{bar baz})
|
||||
assert_equal %w{bar baz}.sort, dep.tags.sort
|
||||
dep = Requirement.new(*%w{bar baz})
|
||||
assert_equal %w{bar baz}.sort, dep.tags.sort
|
||||
end
|
||||
|
||||
def test_preserves_symbol_tags
|
||||
dep = Requirement.new(:build)
|
||||
assert_equal [:build], dep.tags
|
||||
end
|
||||
|
||||
def test_accepts_symbol_and_string_tags
|
||||
dep = Requirement.new([:build, "bar"])
|
||||
assert_equal [:build, "bar"], dep.tags
|
||||
dep = Requirement.new(:build, "bar")
|
||||
assert_equal [:build, "bar"], dep.tags
|
||||
end
|
||||
end
|
Loading…
x
Reference in New Issue
Block a user