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
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
|
require "testing_env"
require "software_spec"
class SoftwareSpecTests < Homebrew::TestCase
def setup
@spec = SoftwareSpec.new
end
def test_resource
@spec.resource("foo") { url "foo-1.0" }
assert @spec.resource_defined?("foo")
end
def test_raises_when_duplicate_resources_are_defined
@spec.resource("foo") { url "foo-1.0" }
assert_raises(DuplicateResourceError) do
@spec.resource("foo") { url "foo-1.0" }
end
end
def test_raises_when_accessing_missing_resources
@spec.owner = Class.new do
def name
"test"
end
def full_name
"test"
end
def tap
"homebrew/core"
end
end.new
assert_raises(ResourceMissingError) { @spec.resource("foo") }
end
def test_set_owner
owner = stub :name => "some_name",
:full_name => "some_name",
:tap => "homebrew/core"
@spec.owner = owner
assert_equal owner, @spec.owner
end
def test_resource_owner
@spec.resource("foo") { url "foo-1.0" }
@spec.owner = stub :name => "some_name",
:full_name => "some_name",
:tap => "homebrew/core"
assert_equal "some_name", @spec.name
@spec.resources.each_value { |r| assert_equal @spec, r.owner }
end
def test_resource_without_version_receives_owners_version
@spec.url("foo-42")
@spec.resource("bar") { url "bar" }
@spec.owner = stub :name => "some_name",
:full_name => "some_name",
:tap => "homebrew/core"
assert_version_equal "42", @spec.resource("bar").version
end
def test_option
@spec.option("foo")
assert @spec.option_defined?("foo")
end
def test_option_raises_when_begins_with_dashes
assert_raises(ArgumentError) { @spec.option("--foo") }
end
def test_option_raises_when_name_empty
assert_raises(ArgumentError) { @spec.option("") }
end
def test_cxx11_option_special_case
@spec.option(:cxx11)
assert @spec.option_defined?("c++11")
refute @spec.option_defined?("cxx11")
end
def test_option_description
@spec.option("bar", "description")
assert_equal "description", @spec.options.first.description
end
def test_option_description_defaults_to_empty_string
@spec.option("foo")
assert_equal "", @spec.options.first.description
end
def test_deprecated_option
@spec.deprecated_option("foo" => "bar")
refute_empty @spec.deprecated_options
assert_equal "foo", @spec.deprecated_options.first.old
assert_equal "bar", @spec.deprecated_options.first.current
end
def test_deprecated_options
@spec.deprecated_option(["foo1", "foo2"] => "bar1", "foo3" => ["bar2", "bar3"])
assert_includes @spec.deprecated_options, DeprecatedOption.new("foo1", "bar1")
assert_includes @spec.deprecated_options, DeprecatedOption.new("foo2", "bar1")
assert_includes @spec.deprecated_options, DeprecatedOption.new("foo3", "bar2")
assert_includes @spec.deprecated_options, DeprecatedOption.new("foo3", "bar3")
end
def test_deprecated_option_raises_when_empty
assert_raises(ArgumentError) { @spec.deprecated_option({}) }
end
def test_depends_on
@spec.depends_on("foo")
assert_equal "foo", @spec.deps.first.name
end
def test_dependency_option_integration
@spec.depends_on "foo" => :optional
@spec.depends_on "bar" => :recommended
assert @spec.option_defined?("with-foo")
assert @spec.option_defined?("without-bar")
end
def test_explicit_options_override_default_dep_option_description
@spec.option("with-foo", "blah")
@spec.depends_on("foo" => :optional)
assert_equal "blah", @spec.options.first.description
end
def test_patch
@spec.patch :p1, :DATA
assert_equal 1, @spec.patches.length
assert_equal :p1, @spec.patches.first.strip
end
end
class HeadSoftwareSpecTests < Homebrew::TestCase
def setup
@spec = HeadSoftwareSpec.new
end
def test_version
assert_version_equal "HEAD", @spec.version
end
def test_verify_download_integrity
assert_nil @spec.verify_download_integrity(Object.new)
end
end
class BottleSpecificationTests < Homebrew::TestCase
def setup
@spec = BottleSpecification.new
end
def test_checksum_setters
checksums = {
:snow_leopard_32 => "deadbeef"*8,
:snow_leopard => "faceb00c"*8,
:lion => "baadf00d"*8,
:mountain_lion => "8badf00d"*8,
}
checksums.each_pair do |cat, digest|
@spec.sha256(digest => cat)
end
checksums.each_pair do |cat, digest|
checksum, = @spec.checksum_for(cat)
assert_equal Checksum.new(:sha256, digest), checksum
end
end
def test_other_setters
double = Object.new
%w[root_url prefix cellar rebuild].each do |method|
@spec.send(method, double)
assert_equal double, @spec.send(method)
end
end
end
|