rubygems-test 0.1.4 → 0.1.5

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.
@@ -3,13 +3,10 @@ require 'rubygems/source_index'
3
3
  require 'rubygems/specification'
4
4
  require 'rubygems/dependency_installer'
5
5
  require 'rubygems/user_interaction'
6
- require 'fileutils'
7
- require 'pathname'
8
6
  require 'rbconfig'
9
7
  require 'yaml'
10
8
  require 'net/http'
11
9
  require 'uri'
12
- require 'ostruct'
13
10
 
14
11
  class Gem::TestError < Gem::Exception; end
15
12
  class Gem::RakeNotFoundError < Gem::Exception; end
@@ -19,7 +16,7 @@ class Gem::Commands::TestCommand < Gem::Command
19
16
  include Gem::DefaultUserInteraction
20
17
 
21
18
  # taken straight out of rake
22
- DEFAULT_RAKEFILES = ['rakefile', 'Rakefile', 'rakefile.rb', 'Rakefile.rb'].freeze
19
+ DEFAULT_RAKEFILES = ['rakefile', 'Rakefile', 'rakefile.rb', 'Rakefile.rb']
23
20
 
24
21
  def description
25
22
  'Run the tests for a specific gem'
@@ -130,9 +127,9 @@ class Gem::Commands::TestCommand < Gem::Command
130
127
  # Upload +yaml+ Results to +results_url+.
131
128
  #
132
129
 
133
- def upload_results(yaml)
130
+ def upload_results(yaml, results_url=nil)
134
131
  begin
135
- results_url = config["upload_service_url"] || 'http://gem-testers.org/test_results'
132
+ results_url ||= config["upload_service_url"] || 'http://gem-testers.org/test_results'
136
133
  url = URI.parse(results_url)
137
134
  response = Net::HTTP.post_form url, {:results => yaml}
138
135
  rescue Errno::ECONNREFUSED => e
@@ -146,7 +143,12 @@ class Gem::Commands::TestCommand < Gem::Command
146
143
  url = body[:data][0] if body[:data]
147
144
  say "Test results posted successfully! \n\t#{url}"
148
145
  when Net::HTTPRedirection
149
- upload_results yaml, response.fetch('Location')
146
+ location = response.fetch('Location')
147
+ if !location or URI.parse(location) == url
148
+ say %[Caught redirection but was unable to redirect to #{location}.]
149
+ else
150
+ upload_results yaml, location
151
+ end
150
152
  when Net::HTTPNotFound
151
153
  say %q[Unable to find where to put the test results. Try: `gem update rubygems-test`]
152
154
  when Net::HTTPClientError
@@ -186,69 +188,64 @@ class Gem::Commands::TestCommand < Gem::Command
186
188
  # output.
187
189
  #
188
190
  def run_tests(spec, rake_path)
189
- pwd = FileUtils.pwd
190
-
191
- FileUtils.chdir(spec.full_gem_path)
192
-
193
191
  output = ""
194
192
  exit_status = nil
195
193
 
196
- if spec.files.include?(".gemtest")
197
- open_proc = proc do |pid, stdin, stdout, stderr|
198
- loop do
199
- if stdout.eof? and stderr.eof?
200
- break
201
- end
194
+ Dir.chdir(spec.full_gem_path) do
202
195
 
203
- buf = ""
196
+ if spec.files.include?(".gemtest")
197
+ open_proc = proc do |pid, stdin, stdout, stderr|
198
+ loop do
199
+ if stdout.eof? and stderr.eof?
200
+ break
201
+ end
204
202
 
205
- handles, _, _ = IO.select([stdout, stderr].reject { |x| x.closed? || x.eof? }, nil, nil, 0.1)
203
+ buf = ""
206
204
 
207
- handles.each do |io|
208
- begin
209
- io.readpartial(16384, buf)
210
- rescue EOFError, IOError
211
- next
212
- end
213
- end if handles
205
+ handles, _, _ = IO.select([stdout, stderr].reject { |x| x.closed? || x.eof? }, nil, nil, 0.1)
214
206
 
215
- output += buf
207
+ handles.each do |io|
208
+ begin
209
+ io.readpartial(16384, buf)
210
+ rescue EOFError, IOError
211
+ next
212
+ end
213
+ end if handles
216
214
 
217
- print buf
218
- end
219
- end
215
+ output += buf
220
216
 
221
- # jruby stuffs it under IO, so we'll use that if it's available
222
- # XXX I'm fairly sure that JRuby's gems don't support plugins, so this is
223
- # left untested.
224
- klass =
225
- if IO.respond_to?(:open4)
226
- IO
227
- else
228
- require 'open4'
229
- Open4
217
+ print buf
218
+ end
230
219
  end
231
220
 
232
- exit_status = klass.popen4(rake_path, "test", '--trace', &open_proc)
221
+ # jruby stuffs it under IO, so we'll use that if it's available
222
+ # XXX I'm fairly sure that JRuby's gems don't support plugins, so this is
223
+ # left untested.
224
+ klass =
225
+ if IO.respond_to?(:open4)
226
+ IO
227
+ else
228
+ require 'open4'
229
+ Open4
230
+ end
233
231
 
234
- if config["upload_results"] or
235
- (!config.has_key?("upload_results") and ask_yes_no("Upload these results to rubygems.org?", true))
232
+ exit_status = klass.popen4(rake_path, "test", '--trace', &open_proc)
236
233
 
237
- upload_results(gather_results(spec, output, exit_status.exitstatus == 0))
238
- end
234
+ if config["upload_results"] or
235
+ (!config.has_key?("upload_results") and ask_yes_no("Upload these results to rubygems.org?", true))
239
236
 
240
- if exit_status.exitstatus != 0
241
- alert_error "Tests did not pass. Examine the output and report it to the author!"
237
+ upload_results(gather_results(spec, output, exit_status.exitstatus == 0))
238
+ end
242
239
 
243
- FileUtils.chdir(pwd)
240
+ if exit_status.exitstatus != 0
241
+ alert_error "Tests did not pass. Examine the output and report it to the author!"
244
242
 
245
- raise Gem::TestError, "something"
243
+ raise Gem::TestError, "something"
244
+ end
245
+ else
246
+ alert_warning "This gem has no tests! Please contact the author to gain testing and reporting!"
246
247
  end
247
- else
248
- alert_warning "This gem has no tests! Please contact the author to gain testing and reporting!"
249
248
  end
250
-
251
- FileUtils.chdir(pwd)
252
249
  end
253
250
 
254
251
  #
metadata CHANGED
@@ -5,8 +5,8 @@ version: !ruby/object:Gem::Version
5
5
  segments:
6
6
  - 0
7
7
  - 1
8
- - 4
9
- version: 0.1.4
8
+ - 5
9
+ version: 0.1.5
10
10
  platform: ruby
11
11
  authors:
12
12
  - Erik Hollensbe
@@ -15,7 +15,7 @@ autorequire:
15
15
  bindir: bin
16
16
  cert_chain: []
17
17
 
18
- date: 2010-12-17 00:00:00 -05:00
18
+ date: 2010-12-26 00:00:00 -05:00
19
19
  default_executable:
20
20
  dependencies:
21
21
  - !ruby/object:Gem::Dependency