brew/Library/Homebrew/test/dependencies_test.rb
Alyssa Ross 70a381a00f tests: enforce super in lifecycle hooks
This will allow us to have global setup and teardown for tests.

For example, we can automatically clear caches after each test, to avoid
annoying intermittent failures like #1879 and #1886.
2017-01-21 11:34:52 +00:00

118 lines
2.7 KiB
Ruby

require "testing_env"
require "dependencies"
require "dependency"
require "requirements"
class DependenciesTests < Homebrew::TestCase
def setup
super
@deps = Dependencies.new
end
def test_shovel_returns_self
assert_same @deps, @deps << Dependency.new("foo")
end
def test_preserves_order
hash = { 0 => "foo", 1 => "bar", 2 => "baz" }
@deps << Dependency.new(hash[0])
@deps << Dependency.new(hash[1])
@deps << Dependency.new(hash[2])
@deps.each_with_index do |dep, idx|
assert_equal hash[idx], dep.name
end
end
def test_repetition
@deps << Dependency.new("foo")
@deps << Dependency.new("bar")
assert_equal "foo, bar", @deps*", "
end
def test_to_a
dep = Dependency.new("foo")
@deps << dep
assert_equal [dep], @deps.to_a
end
def test_to_ary
dep = Dependency.new("foo")
@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
def test_equality
a = Dependencies.new
b = Dependencies.new
dep = Dependency.new("foo")
a << dep
b << dep
assert_equal a, b
assert_eql a, b
b << Dependency.new("bar", [:optional])
refute_equal a, b
refute_eql a, b
end
def test_empty
a = Dependencies.new
assert a.empty?
a << Dependency.new("foo")
refute a.empty?
end
def test_inspect
a = Dependencies.new
assert_equal "#<Dependencies: []>", a.inspect
a << Dependency.new("foo")
assert_equal "#<Dependencies: [#<Dependency: \"foo\" []>]>", a.inspect
end
end
class RequirementsTests < Homebrew::TestCase
def setup
super
@reqs = Requirements.new
end
def test_shovel_returns_self
assert_same @reqs, @reqs << Object.new
end
def test_merging_multiple_dependencies
@reqs << X11Requirement.new << X11Requirement.new
assert_equal 1, @reqs.count
@reqs << Requirement.new
assert_equal 2, @reqs.count
end
def test_comparison_prefers_larger
@reqs << X11Requirement.new << X11Requirement.new("x11", %w[2.6])
assert_equal [X11Requirement.new("x11", %w[2.6])], @reqs.to_a
end
def test_comparison_does_not_merge_smaller
@reqs << X11Requirement.new("x11", %w[2.6]) << X11Requirement.new
assert_equal [X11Requirement.new("x11", %w[2.6])], @reqs.to_a
end
end