tinderbox 1.0.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -0,0 +1,236 @@
1
+ require 'test/unit'
2
+ require 'rubygems'
3
+ require 'test/zentest_assertions'
4
+ require 'rc_rest/net_http_stub'
5
+ require 'rc_rest/uri_stub'
6
+
7
+ $TESTING = true
8
+
9
+ require 'tinderbox/gem_tinderbox'
10
+ require 'tinderbox/gem_runner'
11
+
12
+ class Firebrigade::Cache
13
+ attr_reader :builds, :owners, :projects, :versions, :targets
14
+ end
15
+
16
+ class Tinderbox::GemTinderbox
17
+ attr_writer :source_info_cache, :target_id
18
+ attr_reader :fc, :seen_gem_names
19
+ end
20
+
21
+ class TestTinderboxGemTinderbox < Test::Unit::TestCase
22
+
23
+ def setup
24
+ Net::HTTP.params = []
25
+ Net::HTTP.paths = []
26
+ Net::HTTP.responses = []
27
+
28
+ URI::HTTP.uris = []
29
+ URI::HTTP.responses = []
30
+
31
+ @tgt = Tinderbox::GemTinderbox.new 'firebrigade.example.com', 'username',
32
+ 'password'
33
+
34
+ sic = {}
35
+ def sic.refresh
36
+ end
37
+
38
+ def sic.cache_data
39
+ o = Object.new
40
+ def o.each(&block)
41
+ spec = Gem::Specification.new
42
+ spec.name = 'gem_one'
43
+ spec.version = '0.0.2'
44
+ si = Gem::SourceIndex.new 'gem_one-0.0.2' => spec
45
+ sic_e = Gem::SourceInfoCacheEntry.new si, 0
46
+ yield 'http://gems.example.com', sic_e
47
+ end
48
+ o
49
+ end
50
+
51
+ @tgt.source_info_cache = sic
52
+
53
+ @spec = Gem::Specification.new
54
+ @spec.name = 'gem_one'
55
+ @spec.version = '0.0.2'
56
+ @spec.rubyforge_project = 'gem'
57
+ end
58
+
59
+ def test_new_gems
60
+ specs = @tgt.new_gems.map { |s| s.full_name }
61
+ assert_equal ['gem_one-0.0.2'], specs
62
+ specs = @tgt.new_gems.map { |s| s.full_name }
63
+ assert_equal [], specs, 'Your rubygems needs Gem::Specification#eql?'
64
+ end
65
+
66
+ def test_run_communication_error
67
+ Net::HTTP.responses << proc do |req|
68
+ raise Errno::ECONNREFUSED, 'connect(2)'
69
+ end
70
+
71
+ util_test_run_error "Communication error: Connection refused - connect(2)(Errno::ECONNREFUSED)"
72
+ end
73
+
74
+ def test_run_fetch_error
75
+ Net::HTTP.responses << <<-EOF
76
+ <ok>
77
+ <target>
78
+ <id>5</id>
79
+ <platform>fake platform</platform>
80
+ <release_date>fake release_date</release_date>
81
+ <username>fake username</username>
82
+ <version>fake version</version>
83
+ </target>
84
+ </ok>
85
+ EOF
86
+
87
+ o = Object.new
88
+ def o.refresh() raise Gem::RemoteFetcher::FetchError end
89
+ @tgt.instance_variable_set :@source_info_cache, o
90
+
91
+ util_test_run_error "Gem::RemoteFetcher::FetchError"
92
+ end
93
+
94
+ def test_run_remote_source_exception
95
+ Net::HTTP.responses << proc do |req|
96
+ raise Gem::RemoteSourceException, 'HTTP Response 403'
97
+ end
98
+
99
+ util_test_run_error 'HTTP Response 403'
100
+ end
101
+
102
+ def test_run_spec
103
+ fc = util_setup_cache
104
+ def fc.get_build_id(*a) nil end # not tested
105
+
106
+ Net::HTTP.responses << <<-EOF
107
+ <ok>
108
+ <build>
109
+ <id>5</id>
110
+ <created_on>#{Time.now}</created_on>
111
+ <duration>1.5</duration>
112
+ <successful>true</successful>
113
+ <target_id>4</target_id>
114
+ <version_id>3</version_id>
115
+ </build>
116
+ </ok>
117
+ EOF
118
+
119
+ build = nil
120
+
121
+ out, err = util_capture do
122
+ build = @tgt.run_spec @spec
123
+ end
124
+
125
+ assert_equal '', out.read
126
+ err = err.read.split "\n"
127
+ assert_equal "*** Checking #{@spec.full_name}", err.shift
128
+ assert_equal "*** Igniting (http://firebrigade.example.com/gem/show/gem_one/0.0.2)", err.shift
129
+ assert_equal "*** I lit #{@spec.full_name} on fire!", err.shift
130
+ assert_empty err
131
+ end
132
+
133
+ def test_run_spec_install_error
134
+ fc = util_setup_cache
135
+ def fc.get_build_id(*a) nil end # not tested
136
+ def @tgt.test_gem(spec) raise Tinderbox::InstallError end
137
+ @tgt.seen_gem_names << @spec
138
+
139
+ out, err = util_capture do
140
+ @tgt.run_spec @spec
141
+ end
142
+
143
+ deny_includes @spec.full_name, @tgt.seen_gem_names
144
+ assert_equal '', out.read
145
+ err = err.read.split "\n"
146
+ assert_equal "*** Checking #{@spec.full_name}", err.shift
147
+ assert_equal "*** Igniting (http://firebrigade.example.com/gem/show/gem_one/0.0.2)", err.shift
148
+ assert_equal "*** Failed to install (Tinderbox::InstallError)", err.shift
149
+ assert_empty err
150
+ end
151
+
152
+ def test_run_spec_manual_install_error
153
+ fc = util_setup_cache
154
+ def fc.get_build_id(*a) nil end # not tested
155
+ def @tgt.test_gem(spec) raise Tinderbox::ManualInstallError end
156
+ @tgt.seen_gem_names << @spec
157
+
158
+ out, err = util_capture do
159
+ @tgt.run_spec @spec
160
+ end
161
+
162
+ assert_includes @spec, @tgt.seen_gem_names
163
+ assert_equal '', out.read
164
+ err = err.read.split "\n"
165
+ assert_equal "*** Checking #{@spec.full_name}", err.shift
166
+ assert_equal "*** Igniting (http://firebrigade.example.com/gem/show/gem_one/0.0.2)",
167
+ err.shift
168
+ assert_equal "*** Failed to install (Tinderbox::ManualInstallError)",
169
+ err.shift
170
+ assert_empty err
171
+ end
172
+
173
+ def test_run_spec_tested
174
+ fc = util_setup_cache
175
+ def fc.get_build_id(*a) true end # tested
176
+
177
+ out, err = util_capture do
178
+ @tgt.run_spec @spec
179
+ end
180
+
181
+ assert_equal '', out.read
182
+ err = err.read.split "\n"
183
+ assert_equal "*** Checking #{@spec.full_name}", err.shift
184
+ assert_empty err
185
+ end
186
+
187
+ def test_tested_eh
188
+ @tgt.target_id = 5
189
+ @tgt.fc.builds[[3, 5]] = 4
190
+ assert_equal true, @tgt.tested?(3)
191
+
192
+ URI::HTTP.responses << <<-EOF
193
+ <error>
194
+ <message>No such build exists</message>
195
+ </error>
196
+ EOF
197
+
198
+ assert_equal false, @tgt.tested?(-1)
199
+ end
200
+
201
+ def test_update_gems
202
+ o = Object.new
203
+ def o.refreshed?() @refreshed end
204
+ def o.refresh() @refreshed = true end
205
+
206
+ @tgt.instance_variable_set :@source_info_cache, o
207
+
208
+ @tgt.update_gems
209
+
210
+ assert_equal true, o.refreshed?
211
+ end
212
+
213
+ def util_test_run_error(message)
214
+ out, err = util_capture do
215
+ @tgt.run
216
+ end
217
+
218
+ assert_equal '', out.read
219
+
220
+ err = err.read.split "\n"
221
+ assert_equal message, err.first
222
+ assert_match(/Will retry at/, err.last)
223
+ end
224
+
225
+ def util_setup_cache
226
+ @tgt.target_id = 5
227
+ fc = @tgt.fc
228
+ fc.owners['gem'] = 100
229
+ fc.projects[[100, 'gem_one']] = 101
230
+ fc.versions[[101, '0.0.2']] = 102
231
+
232
+ fc
233
+ end
234
+
235
+ end
236
+
metadata ADDED
@@ -0,0 +1,97 @@
1
+ --- !ruby/object:Gem::Specification
2
+ rubygems_version: 0.9.1
3
+ specification_version: 1
4
+ name: tinderbox
5
+ version: !ruby/object:Gem::Version
6
+ version: 1.0.0
7
+ date: 2007-01-31 00:00:00 -08:00
8
+ summary: Tinderbox says, "I'm gonna light you on fire."
9
+ require_paths:
10
+ - lib
11
+ email: drbrain@segment7.net
12
+ homepage:
13
+ rubyforge_project: seattlerb
14
+ description: "http://seattlerb.rubyforge.org/tinderbox == DESCRIPTION: Tinderbox tests projects and tries to make them break by running them on as many different platforms as possible. == FEATURES/PROBLEMS:"
15
+ autorequire:
16
+ default_executable:
17
+ bindir: bin
18
+ has_rdoc: true
19
+ required_ruby_version: !ruby/object:Gem::Version::Requirement
20
+ requirements:
21
+ - - ">"
22
+ - !ruby/object:Gem::Version
23
+ version: 0.0.0
24
+ version:
25
+ platform: ruby
26
+ signing_key:
27
+ cert_chain:
28
+ post_install_message:
29
+ authors:
30
+ - Eric Hodel
31
+ files:
32
+ - History.txt
33
+ - LICENSE.txt
34
+ - Manifest.txt
35
+ - README.txt
36
+ - Rakefile
37
+ - bin/tinderbox_gem_build
38
+ - bin/tinderbox_gem_run
39
+ - lib/tinderbox.rb
40
+ - lib/tinderbox/build.rb
41
+ - lib/tinderbox/gem_runner.rb
42
+ - lib/tinderbox/gem_tinderbox.rb
43
+ - test/test_tinderbox_build.rb
44
+ - test/test_tinderbox_gem_runner.rb
45
+ - test/test_tinderbox_gem_tinderbox.rb
46
+ test_files:
47
+ - test/test_tinderbox_build.rb
48
+ - test/test_tinderbox_gem_runner.rb
49
+ - test/test_tinderbox_gem_tinderbox.rb
50
+ rdoc_options: []
51
+
52
+ extra_rdoc_files: []
53
+
54
+ executables:
55
+ - tinderbox_gem_build
56
+ - tinderbox_gem_run
57
+ extensions: []
58
+
59
+ requirements: []
60
+
61
+ dependencies:
62
+ - !ruby/object:Gem::Dependency
63
+ name: ZenTest
64
+ version_requirement:
65
+ version_requirements: !ruby/object:Gem::Version::Requirement
66
+ requirements:
67
+ - - ">="
68
+ - !ruby/object:Gem::Version
69
+ version: 3.4.0
70
+ version:
71
+ - !ruby/object:Gem::Dependency
72
+ name: firebrigade_api
73
+ version_requirement:
74
+ version_requirements: !ruby/object:Gem::Version::Requirement
75
+ requirements:
76
+ - - ">="
77
+ - !ruby/object:Gem::Version
78
+ version: 1.0.0
79
+ version:
80
+ - !ruby/object:Gem::Dependency
81
+ name: rspec
82
+ version_requirement:
83
+ version_requirements: !ruby/object:Gem::Version::Requirement
84
+ requirements:
85
+ - - ">="
86
+ - !ruby/object:Gem::Version
87
+ version: 0.7.5.1
88
+ version:
89
+ - !ruby/object:Gem::Dependency
90
+ name: hoe
91
+ version_requirement:
92
+ version_requirements: !ruby/object:Gem::Version::Requirement
93
+ requirements:
94
+ - - ">="
95
+ - !ruby/object:Gem::Version
96
+ version: 1.1.7
97
+ version: