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
|
require 'testing_env'
require 'requirement'
class RequirementTests < Test::Unit::TestCase
def test_accepts_single_tag
dep = Requirement.new(%w{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
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
end
def test_dsl_fatal
req = Class.new(Requirement) { fatal true }.new
assert req.fatal?
end
def test_satisfy_true
req = Class.new(Requirement) do
satisfy(:build_env => false) { true }
end.new
assert req.satisfied?
end
def test_satisfy_false
req = Class.new(Requirement) do
satisfy(:build_env => false) { false }
end.new
assert !req.satisfied?
end
def test_satisfy_with_boolean
req = Class.new(Requirement) do
satisfy true
end.new
assert req.satisfied?
end
def test_satisfy_sets_up_build_env_by_default
req = Class.new(Requirement) do
satisfy { true }
end.new
ENV.expects(:with_build_environment).yields.returns(true)
assert req.satisfied?
end
def test_satisfy_build_env_can_be_disabled
req = Class.new(Requirement) do
satisfy(:build_env => false) { true }
end.new
ENV.expects(:with_build_environment).never
assert req.satisfied?
end
def test_infers_path_from_satisfy_result
which_path = Pathname.new("/foo/bar/baz")
req = Class.new(Requirement) do
satisfy { which_path }
end.new
ENV.expects(:with_build_environment).yields.returns(which_path)
ENV.expects(:append_path).with("PATH", which_path.parent)
req.satisfied?
req.modify_build_environment
end
def test_dsl_build
req = Class.new(Requirement) { build true }.new
assert req.build?
end
def test_infer_name_from_class
klass, const = self.class, :FooRequirement
klass.const_set(const, Class.new(Requirement))
assert_equal "foo", klass.const_get(const).new.name
ensure
klass.send(:remove_const, const) if klass.const_defined?(const)
end
def test_dsl_default_formula
req = Class.new(Requirement) { default_formula 'foo' }.new
assert req.default_formula?
end
def test_to_dependency
req = Class.new(Requirement) { default_formula 'foo' }.new
assert_equal Dependency.new('foo'), req.to_dependency
end
def test_to_dependency_calls_requirement_modify_build_environment
error = Class.new(StandardError)
req = Class.new(Requirement) do
default_formula 'foo'
satisfy { true }
env { raise error }
end.new
assert_raises(error) do
req.to_dependency.modify_build_environment
end
end
def test_eql
a, b = Requirement.new, Requirement.new
assert a.eql?(b)
assert b.eql?(a)
assert_equal a.hash, b.hash
end
def test_not_eql
a, b = Requirement.new([:optional]), Requirement.new
assert_not_equal a.hash, b.hash
assert !a.eql?(b)
assert !b.eql?(a)
end
end
|