Actions
Bug #5822
closedtestunit に -j オプションを渡すと稀にテストを実行せずに終了する
Description
make test-all TESTS="-j2 ruby/test_require.rb"
のように test-all の引数に -j と1ファイルだけ与えると、稀にテストをひとつも実行せずに終了することがあります。
@tasks が空になった瞬間に worker が全て :prepare または :ready だと実行中の worker が居ないと判断して終了してしまうようです。
以下のような変更で一応発生しなくなりました。一応というのは status の状態遷移をちゃんと確認していないからです。
diff --git a/lib/test/unit.rb b/lib/test/unit.rb
index eb0666a..00313a3 100644
--- a/lib/test/unit.rb
+++ b/lib/test/unit.rb
@@ -457,7 +457,9 @@ module Test
bang = $1
worker.status = :ready
if @tasks.empty?
-
break unless @workers.find{|x| x.status == :running }
-
unless @workers.find{|x| [:running, :prepare].include? x.status}
-
break
-
end else if @options[:separate] && bang.empty? @workers_hash.delete worker.io
Updated by nagachika (Tomoyuki Chikanaga) almost 13 years ago
- Status changed from Open to Closed
- % Done changed from 0 to 100
This issue was solved with changeset r34155.
Tomoyuki, thank you for reporting this issue.
Your contribution to Ruby is greatly appreciated.
May Ruby be with you.
- lib/test/unit.rb (Test::Unit::Runner::Worker#_run_parallels): fix
premature exit when all workers' status are :ready or :prepare.
[ruby-dev:45061] [Bug #5822]
Actions
Like0
Like0