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
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
|
require "testing_env"
require "dependency_collector"
class DependencyCollectorTests < Homebrew::TestCase
def find_dependency(name)
@d.deps.find { |dep| dep.name == name }
end
def find_requirement(klass)
@d.requirements.find { |req| req.is_a? klass }
end
def setup
@d = DependencyCollector.new
end
def teardown
DependencyCollector.clear_cache
end
def test_dependency_creation
@d.add "foo" => :build
@d.add "bar" => ["--universal", :optional]
assert_instance_of Dependency, find_dependency("foo")
assert_equal 2, find_dependency("bar").tags.length
end
def test_add_returns_created_dep
ret = @d.add "foo"
assert_equal Dependency.new("foo"), ret
end
def test_dependency_tags
assert_predicate Dependency.new("foo", [:build]), :build?
assert_predicate Dependency.new("foo", [:build, :optional]), :optional?
assert_includes Dependency.new("foo", ["universal"]).options, "--universal"
assert_empty Dependency.new("foo").tags
end
def test_requirement_creation
@d.add :x11
assert_instance_of X11Requirement, find_requirement(X11Requirement)
end
def test_no_duplicate_requirements
2.times { @d.add :x11 }
assert_equal 1, @d.requirements.count
end
def test_requirement_tags
@d.add x11: "2.5.1"
@d.add xcode: :build
assert_empty find_requirement(X11Requirement).tags
assert_predicate find_requirement(XcodeRequirement), :build?
end
def test_x11_no_tag
@d.add :x11
assert_empty find_requirement(X11Requirement).tags
end
def test_x11_min_version
@d.add x11: "2.5.1"
assert_equal "2.5.1", find_requirement(X11Requirement).min_version.to_s
end
def test_x11_tag
@d.add x11: :optional
assert_predicate find_requirement(X11Requirement), :optional?
end
def test_x11_min_version_and_tag
@d.add x11: ["2.5.1", :optional]
dep = find_requirement(X11Requirement)
assert_equal "2.5.1", dep.min_version.to_s
assert_predicate dep, :optional?
end
def test_ant_dep
@d.add ant: :build
assert_equal find_dependency("ant"), Dependency.new("ant", [:build])
end
def test_raises_typeerror_for_unknown_classes
assert_raises(TypeError) { @d.add(Class.new) }
end
def test_raises_typeerror_for_unknown_types
assert_raises(TypeError) { @d.add(Object.new) }
end
def test_does_not_mutate_dependency_spec
spec = { "foo" => :optional }
copy = spec.dup
@d.add(spec)
assert_equal copy, spec
end
def test_resource_dep_git_url
resource = Resource.new
resource.url("git://example.com/foo/bar.git")
assert_instance_of GitRequirement, @d.add(resource)
end
def test_resource_dep_7z_url
resource = Resource.new
resource.url("http://example.com/foo.7z")
assert_equal Dependency.new("p7zip", [:build]), @d.add(resource)
end
def test_resource_dep_gzip_url
resource = Resource.new
resource.url("http://example.com/foo.tar.gz")
assert_nil @d.add(resource)
end
def test_resource_dep_lz_url
resource = Resource.new
resource.url("http://example.com/foo.lz")
assert_equal Dependency.new("lzip", [:build]), @d.add(resource)
end
def test_resource_dep_lha_url
resource = Resource.new
resource.url("http://example.com/foo.lha")
assert_equal Dependency.new("lha", [:build]), @d.add(resource)
end
def test_resource_dep_lzh_url
resource = Resource.new
resource.url("http://example.com/foo.lzh")
assert_equal Dependency.new("lha", [:build]), @d.add(resource)
end
def test_resource_dep_rar_url
resource = Resource.new
resource.url("http://example.com/foo.rar")
assert_equal Dependency.new("unrar", [:build]), @d.add(resource)
end
def test_resource_dep_raises_for_unknown_classes
resource = Resource.new
resource.download_strategy = Class.new
assert_raises(TypeError) { @d.add(resource) }
end
end
|