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:
Jack Nagel 2013-01-13 20:05:09 -06:00
parent e629f14d56
commit fe4f39dcee
4 changed files with 109 additions and 97 deletions

View File

@ -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

View 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

View File

@ -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'

View 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