1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
|
require "testing_env"
require "dependency"
class DependableTests < Homebrew::TestCase
def setup
super
@tags = ["foo", "bar", :build]
@dep = Struct.new(:tags).new(@tags).extend(Dependable)
end
def test_options
assert_equal %w[--foo --bar].sort, @dep.options.as_flags.sort
end
def test_interrogation
assert_predicate @dep, :build?
refute_predicate @dep, :optional?
refute_predicate @dep, :recommended?
end
end
class DependencyTests < Homebrew::TestCase
def test_accepts_single_tag
dep = Dependency.new("foo", %w[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_merge_repeats
dep = Dependency.new("foo", [:build], nil, "foo")
dep2 = Dependency.new("foo", ["bar"], nil, "foo2")
dep3 = Dependency.new("xyz", ["abc"], nil, "foo")
merged = Dependency.merge_repeats([dep, dep2, dep3])
assert_equal 2, merged.length
assert_equal Dependency, merged.first.class
foo_named_dep = merged.find { |d| d.name == "foo" }
assert_equal ["bar"], foo_named_dep.tags
assert_includes foo_named_dep.option_names, "foo"
assert_includes foo_named_dep.option_names, "foo2"
xyz_named_dep = merged.find { |d| d.name == "xyz" }
assert_equal ["abc"], xyz_named_dep.tags
assert_includes xyz_named_dep.option_names, "foo"
refute_includes xyz_named_dep.option_names, "foo2"
end
def test_merges_necessity_tags
required_dep = Dependency.new("foo")
recommended_dep = Dependency.new("foo", [:recommended])
optional_dep = Dependency.new("foo", [:optional])
deps = Dependency.merge_repeats([required_dep, recommended_dep])
assert_equal deps.count, 1
assert_predicate deps.first, :required?
refute_predicate deps.first, :recommended?
refute_predicate deps.first, :optional?
deps = Dependency.merge_repeats([required_dep, optional_dep])
assert_equal deps.count, 1
assert_predicate deps.first, :required?
refute_predicate deps.first, :recommended?
refute_predicate deps.first, :optional?
deps = Dependency.merge_repeats([recommended_dep, optional_dep])
assert_equal deps.count, 1
refute_predicate deps.first, :required?
assert_predicate deps.first, :recommended?
refute_predicate deps.first, :optional?
end
def test_merges_temporality_tags
normal_dep = Dependency.new("foo")
build_dep = Dependency.new("foo", [:build])
run_dep = Dependency.new("foo", [:run])
deps = Dependency.merge_repeats([normal_dep, build_dep])
assert_equal deps.count, 1
refute_predicate deps.first, :build?
refute_predicate deps.first, :run?
deps = Dependency.merge_repeats([normal_dep, run_dep])
assert_equal deps.count, 1
refute_predicate deps.first, :build?
refute_predicate deps.first, :run?
deps = Dependency.merge_repeats([build_dep, run_dep])
assert_equal deps.count, 1
refute_predicate deps.first, :build?
refute_predicate deps.first, :run?
end
def test_equality
foo1 = Dependency.new("foo")
foo2 = Dependency.new("foo")
bar = Dependency.new("bar")
assert_equal foo1, foo2
assert_eql foo1, foo2
refute_equal foo1, bar
refute_eql foo1, bar
foo3 = Dependency.new("foo", [:build])
refute_equal foo1, foo3
refute_eql foo1, foo3
end
end
class TapDependencyTests < Homebrew::TestCase
def test_tap
dep = TapDependency.new("foo/bar/dog")
assert_equal Tap.new("foo", "bar"), dep.tap
end
def test_option_names
dep = TapDependency.new("foo/bar/dog")
assert_equal %w[dog], dep.option_names
end
end
|