blob: c8a8e1ba87c2bed625e0d90d4fc8b539a8b8be83 (
plain)
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
|
require 'testing_env'
require 'test/testball'
require 'dependencies'
class DependencyCollector
def find_requirement(klass)
requirements.find do |req|
klass === req
end
end
end
class RequirementTests < Test::Unit::TestCase
def setup
@d = DependencyCollector.new
end
def test_requirement_creation
@d.add :x11
assert_not_nil @d.find_requirement(X11Dependency)
end
def test_no_duplicate_requirements
2.times { @d.add :x11 }
assert_equal 1, @d.requirements.length
end
end
class RequirementTagTests < Test::Unit::TestCase
def setup
@d = DependencyCollector.new
end
def test_requirement_tags
@d.add :x11 => '2.5.1'
@d.add :xcode => :build
assert_empty @d.find_requirement(X11Dependency).tags
assert @d.find_requirement(XcodeDependency).build?
end
def test_x11_no_tag
@d.add :x11
assert_empty @d.find_requirement(X11Dependency).tags
end
def test_x11_min_version
@d.add :x11 => '2.5.1'
assert_equal '2.5.1', @d.find_requirement(X11Dependency).min_version
end
def test_x11_tag
@d.add :x11 => :optional
assert @d.find_requirement(X11Dependency).optional?
end
def test_x11_min_version_and_tag
@d.add :x11 => ['2.5.1', :optional]
dep = @d.find_requirement(X11Dependency)
assert_equal '2.5.1', dep.min_version
assert dep.optional?
end
end
class ExternalDepsTests < Test::Unit::TestCase
def check_deps_fail specs
d = DependencyCollector.new
specs.each do |key, value|
d.add key => value
end
# Should have found a dep
assert d.requirements.size == 1
d.requirements do |req|
assert !d.satisfied?
end
end
def check_deps_pass specs
d = DependencyCollector.new
specs.each do |key, value|
d.add key => value
end
# Should have found a dep
assert d.requirements.size == 1
d.requirements do |req|
assert d.satisfied?
end
end
def test_bad_perl_deps
check_deps_fail "notapackage" => :perl
end
def test_good_perl_deps
check_deps_pass "ENV" => :perl
end
def test_bad_python_deps
check_deps_fail "notapackage" => :python
end
def test_good_python_deps
check_deps_pass "datetime" => :python
end
def test_bad_ruby_deps
check_deps_fail "notapackage" => :ruby
end
def test_good_ruby_deps
check_deps_pass "date" => :ruby
end
# Only run these next two tests if jruby is installed.
def test_bad_jruby_deps
check_deps_fail "notapackage" => :jruby if which('jruby')
end
def test_good_jruby_deps
check_deps_pass "date" => :jruby if which('jruby')
end
# Only run these next two tests if rubinius is installed.
def test_bad_rubinius_deps
check_deps_fail "notapackage" => :rbx if which('rbx')
end
def test_good_rubinius_deps
check_deps_pass "date" => :rbx if which('rbx')
end
# Only run these next two tests if chicken scheme is installed.
def test_bad_chicken_deps
check_deps_fail "notapackage" => :chicken if which('csc')
end
def test_good_chicken_deps
check_deps_pass "extras" => :chicken if which('csc')
end
# Only run these next two tests if node.js is installed.
def test_bad_node_deps
check_deps_fail "notapackage" => :node if which('node')
end
def test_good_node_deps
check_deps_pass "util" => :node if which('node')
end
end
|