diff options
author | sorah <sorah@b2dd03c8-39d4-4d8f-98ff-823fe69b080e> | 2012-03-11 08:28:48 +0000 |
---|---|---|
committer | sorah <sorah@b2dd03c8-39d4-4d8f-98ff-823fe69b080e> | 2012-03-11 08:28:48 +0000 |
commit | 42b1df08fc39bd990c0dd3c97e2689a085f9ce14 (patch) | |
tree | bb4114dc8898e6cdd4a6b9af48ee6acfcfd5c65f /lib/test/unit.rb | |
parent | 605f4baef74582341397b02bc3ac00eddeaf4581 (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.rb | 45 |
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 "" |