* 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
This commit is contained in:
sorah 2012-03-11 08:28:48 +00:00
Родитель 605f4baef7
Коммит 42b1df08fc
3 изменённых файлов: 47 добавлений и 24 удалений

Просмотреть файл

@ -1,3 +1,11 @@
Sun Mar 11 17:10:04 2012 Shota Fukumori <sorah@tubusu.net>
* 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]
Sun Mar 11 15:46:45 2012 Shota Fukumori <sorah@tubusu.net>
* io.c: fix rdoc of `IO.binwrite` to show same as `IO.write` except

Просмотреть файл

@ -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|
begin
timeout(1) do
worker.quit
end
rescue Errno::EPIPE
rescue Timeout::Error
end
worker.close
end
begin
timeout(0.2*@workers.size) do
Process.waitall
end
rescue Timeout::Error
if @workers
@workers.each do |worker|
begin
Process.kill(:KILL,worker.pid)
rescue Errno::ESRCH; end
timeout(1) do
worker.quit
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
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 ""

Просмотреть файл

@ -88,8 +88,14 @@ module Test
@old_loadpath = []
begin
@stdout = increment_io(STDOUT)
@stdin = increment_io(STDIN)
begin
@stdout = increment_io(STDOUT)
@stdin = increment_io(STDIN)
rescue
exit 2
end
exit 2 unless @stdout && @stdin
@stdout.sync = true
@stdout.puts "ready!"
while buf = @stdin.gets
@ -130,12 +136,12 @@ module Test
rescue Errno::EPIPE
rescue Exception => e
begin
@stdout.puts "bye #{[Marshal.dump(e)].pack("m0")}"
@stdout.puts "bye #{[Marshal.dump(e)].pack("m0")}" if @stdout
rescue Errno::EPIPE;end
exit
ensure
@stdin.close
@stdout.close
@stdin.close if @stdin
@stdout.close if @stdout
end
end
end