[#44925] [Backport93 - Backport #5702][Open] backport r33935 — Yusuke Endoh <mame@...>

19 messages 2011/12/03

[#44940] Re: [ruby-cvs:41134] naruse:r33956 (trunk): Comment out tests which fails with GDBM-DBM compat mode. — Tanaka Akira <akr@...>

2011/12/6 <naruse@ruby-lang.org>:

9 messages 2011/12/05
[#44941] Re: [ruby-cvs:41134] naruse:r33956 (trunk): Comment out tests which fails with GDBM-DBM compat mode. — KOSAKI Motohiro <kosaki.motohiro@...> 2011/12/05

2011年12月5日16:56 Tanaka Akira <akr@fsij.org>:

[#44942] Re: [ruby-cvs:41134] naruse:r33956 (trunk): Comment out tests which fails with GDBM-DBM compat mode. — KOSAKI Motohiro <kosaki.motohiro@...> 2011/12/05

> おかしいな。gdbmは勝手にcreateフラグを立ててしまうので当該2つの

[#44985] [ruby-trunk - Bug #5757][Open] main threadがreadやselectで待っていると、^C でなかなか死なない — Yui NARUSE <naruse@...>

12 messages 2011/12/13

[#45021] [ruby-trunk - Bug #5786][Open] LoadError: cannot load such file -- openssl — Kazuhiro NISHIYAMA <redmine@...>

11 messages 2011/12/21

[#45057] [ruby-trunk - Feature #5820][Assigned] Merge Onigmo to Ruby 2.0 — Yui NARUSE <naruse@...>

21 messages 2011/12/28

[ruby-dev:45061] [ruby-trunk - Bug #5822][Open] testunit に -j オプションを渡すと稀にテストを実行せずに終了する

From: Tomoyuki Chikanaga <nagachika00@...>
Date: 2011-12-29 04:08:14 UTC
List: ruby-dev #45061
Issue #5822 has been reported by Tomoyuki Chikanaga.

----------------------------------------
Bug #5822: testunit に -j オプションを渡すと稀にテストを実行せずに終了する
https://bugs.ruby-lang.org/issues/5822

Author: Tomoyuki Chikanaga
Status: Open
Priority: Normal
Assignee: Shota Fukumori
Category: lib
Target version: 
ruby -v: ruby 2.0.0dev (2011-12-28 trunk 34149) [i686-linux]


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



-- 
http://redmine.ruby-lang.org

In This Thread

Prev Next