summaryrefslogtreecommitdiff
path: root/lib/test/unit.rb
diff options
context:
space:
mode:
authorsorah <sorah@b2dd03c8-39d4-4d8f-98ff-823fe69b080e>2012-03-11 08:28:48 +0000
committersorah <sorah@b2dd03c8-39d4-4d8f-98ff-823fe69b080e>2012-03-11 08:28:48 +0000
commit42b1df08fc39bd990c0dd3c97e2689a085f9ce14 (patch)
treebb4114dc8898e6cdd4a6b9af48ee6acfcfd5c65f /lib/test/unit.rb
parent605f4baef74582341397b02bc3ac00eddeaf4581 (diff)
* lib/test/unit.rb: Put error message into STDERR if failed to lanch
worker (job) process. [ruby-dev:44802] [Bug #5577] * lib/test/unit/parallel.rb: If failed to increment_io, exit with code 2. [ruby-dev:44802] [Bug #5577] git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@34968 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
Diffstat (limited to 'lib/test/unit.rb')
-rw-r--r--lib/test/unit.rb45
1 files changed, 27 insertions, 18 deletions
diff --git a/lib/test/unit.rb b/lib/test/unit.rb
index 89cb93a678..5b62774f44 100644
--- a/lib/test/unit.rb
+++ b/lib/test/unit.rb
@@ -429,7 +429,12 @@ module Test
# Array of workers.
launch_worker = Proc.new {
- worker = Worker.launch(@options[:ruby],@args)
+ begin
+ worker = Worker.launch(@options[:ruby],@args)
+ rescue => e
+ warn "ERROR: Failed to launch job process - #{e.class}: #{e.message}"
+ exit 1
+ end
worker.hook(:dead) do |w,info|
after_worker_quit w
after_worker_down w, *info if !info.empty? && !worker.quit_called
@@ -536,25 +541,29 @@ module Test
end
end
end
- @workers.each do |worker|
+
+ if @workers
+ @workers.each do |worker|
+ begin
+ timeout(1) do
+ worker.quit
+ end
+ rescue Errno::EPIPE
+ rescue Timeout::Error
+ end
+ worker.close
+ end
+
begin
- timeout(1) do
- worker.quit
+ timeout(0.2*@workers.size) do
+ Process.waitall
end
- rescue Errno::EPIPE
rescue Timeout::Error
- end
- worker.close
- end
- begin
- timeout(0.2*@workers.size) do
- Process.waitall
- end
- rescue Timeout::Error
- @workers.each do |worker|
- begin
- Process.kill(:KILL,worker.pid)
- rescue Errno::ESRCH; end
+ @workers.each do |worker|
+ begin
+ Process.kill(:KILL,worker.pid)
+ rescue Errno::ESRCH; end
+ end
end
end
@@ -565,7 +574,7 @@ module Test
@errors += rep.map{|x| x[:result][0] }.inject(:+)
@failures += rep.map{|x| x[:result][1] }.inject(:+)
@skips += rep.map{|x| x[:result][2] }.inject(:+)
- else
+ elsif @workers
puts ""
puts "Retrying..."
puts ""