Feature #3037

testrb の動作が1.8.7 の testrb と違いすぎる

Added by okkez _ over 5 years ago. Updated over 4 years ago.

Status:Rejected
Priority:Normal
Assignee:-

Description

=begin
1.8.7 の testrb では --help オプションで使用可能なオプションが詳しく表示されますが、
ruby 1.9.2dev (2010-03-24 trunk 27030) [x86_64-linux] の testrb は表示しません。

また 1.8.7 の testrb では以下のようにコマンドラインからロードパスを指定して実行出来ますが、
1.9 の testrb ではそれもできません。

$ testrb -Ilib test
Loaded suite test
Started
..............................................
Finished in 0.574919 seconds.

46 tests, 16959 assertions, 0 failures, 0 errors
=end

History

#1 Updated by Nobuyoshi Nakada over 5 years ago

  • Assignee set to Ryan Davis

=begin

=end

#2 Updated by Ryan Davis about 5 years ago

  • Assignee deleted (Ryan Davis)

=begin

=end

#3 Updated by Yusuke Endoh about 5 years ago

  • Target version changed from 1.9.2 to 2.0.0

=begin
遠藤です。

2010年3月29日18:21 okkez _ redmine@ruby-lang.org:

1.8.7 の testrb では --help オプションで使用可能なオプションが詳しく表示されますが、
ruby 1.9.2dev (2010-03-24 trunk 27030) [x86_64-linux] の testrb は表示しません。

また 1.8.7 の testrb では以下のようにコマンドラインからロードパスを指定して実行出来ますが、
1.9 の testrb ではそれもできません。

$ testrb -Ilib test
Loaded suite test
Started
..............................................
Finished in 0.574919 seconds.

46 tests, 16959 assertions, 0 failures, 0 errors

この件ですが、test/unit のメンテナとしてリストされていた Ryan Davis に
問い合わせたところ (#3275) 、Ryan は test/unit のメンテナではないという
返事が来ました。つまり、現在 test/unit にメンテナがおりません。

メンテナ不在の状況で対応するには大変なのと、--console や --gtk や --fox
などのオプションは非互換になることなど仕様から検討しないといけないため、
1.9.2 では WONTFIX としたいと思います。

1.9.3 以降でもどなたかがメンテナになってくれるなどしないと直らないかも
しれません。
test/unit を他の互換なテストフレームワーク (Test::Unit 2 とか?) に入れ
替えることを検討した方がいいかも知れません。

--
Yusuke Endoh mame@tsg.ne.jp
=end

#4 Updated by okkez _ about 5 years ago

=begin

この件ですが、test/unit のメンテナとしてリストされていた Ryan Davis に
問い合わせたところ (#3275) 、Ryan は test/unit のメンテナではないという
返事が来ました。つまり、現在 test/unit にメンテナがおりません。

なるほど。そのやり取りは見ていました。

メンテナ不在の状況で対応するには大変なのと、--console や --gtk や --fox
などのオプションは非互換になることなど仕様から検討しないといけないため、
1.9.2 では WONTFIX としたいと思います。

残念ですが、了解しました。
気付くのが遅くてすみませんでした。

=end

#5 Updated by Kouhei Sutou about 5 years ago

=begin
須藤です。

In
" [Bug #3037] testrb の動作が1.8.7 の testrb と違いすぎる" on Wed, 19 May 2010 21:04:55 +0900,
Yusuke Endoh redmine@ruby-lang.org wrote:

1.9.3 以降でもどなたかがメンテナになってくれるなどしないと直らないかも
しれません。
test/unit を他の互換なテストフレームワーク (Test::Unit 2 とか?) に入れ
替えることを検討した方がいいかも知れません。

もし、Test::Unit 2になってもよいなら、そのときはメンテナに立
候補しようと思います。

=end

#6 Updated by Akira Tanaka about 5 years ago

=begin
2010年5月19日21:04 Yusuke Endoh redmine@ruby-lang.org:

test/unit を他の互換なテストフレームワーク (Test::Unit 2 とか?) に入れ
替えることを検討した方がいいかも知れません。

経験上、1.8 の test/unit では、test/unit 内で異常終了 (SEGV とか) したとき、
再現スクリプトを最小化するのがとてもたいへんだったので、もとに戻すのは
良い方法とは思えません。
--
[田中 哲][たなか あきら][Tanaka Akira]

=end

#7 Updated by Kouhei Sutou about 5 years ago

=begin
須藤です。

In AANLkTinXX9hlBMvl-9eW1gWj9H8HIKjclLVwmyphOANy@mail.gmail.com
" Re: [Bug #3037] testrb の動作が1.8.7 の testrb と違いすぎる" on Mon, 24 May 2010 16:45:36 +0900,
Tanaka Akira akr@fsij.org wrote:

test/unit を他の互換なテストフレームワーク (Test::Unit 2 とか?) に入れ
替えることを検討した方がいいかも知れません。

経験上、1.8 の test/unit では、test/unit 内で異常終了 (SEGV とか) したとき、
再現スクリプトを最小化するのがとてもたいへんだったので、もとに戻すのは
良い方法とは思えません。

これは前に田中さんと話したときに聞いた気がする、↓のようなケー
スのことですか?

class SomeTest < Test::Unit::TestCase
def setup
some_setup1
some_setup2
some_setup3
end

 def test_segv
   assert_equal("Good", some_method(arg1))
   assert_equal("Good", some_method(arg2))
   assert_equal("Good", some_method(arg3))
   assert_equal("SEGV!!!", some_method(arg4))
   assert_equal("Good", some_method(arg5))
   assert_equal("Good", some_method(arg6))
 end

end

というテストスクリプトで異常終了したときに、

some_setup1
some_setup2
some_setup3
some_method(arg1)
some_method(arg2)
some_method(arg3)
some_method(arg4)
some_method(arg5)
some_method(arg6)

というスクリプトを作るのが面倒くさいというケース。

=end

#8 Updated by Akira Tanaka about 5 years ago

=begin
2010年5月28日21:03 Kouhei Sutou kou@cozmixng.org:

経験上、1.8 の test/unit では、test/unit 内で異常終了 (SEGV とか) したとき、
再現スクリプトを最小化するのがとてもたいへんだったので、もとに戻すのは
良い方法とは思えません。

これは前に田中さんと話したときに聞いた気がする、↓のようなケー
スのことですか?

いいえ。

個々のテストでなく test/unit というライブラリの中で異常終了するケースや、
テストの中身を取り出して test/unit 抜きで実行すると異常終了しないケースです。

そういうケースでは、test/unit というライブラリを削っていって
再現スクリプトを作るのですが、それがたいへんなのです。

ruby 自体に問題がある場合にはそういうはめに陥るので、
ユニットテストフレームワークは単純なほうが良いと思っています。
--
[田中 哲][たなか あきら][Tanaka Akira]

=end

#9 Updated by Kouhei Sutou about 5 years ago

=begin
須藤です。

In
" Re: [Bug #3037] testrb の動作が1.8.7 の testrb と違いすぎる" on Fri, 28 May 2010 23:57:44 +0900,
Tanaka Akira akr@fsij.org wrote:

個々のテストでなく test/unit というライブラリの中で異常終了するケースや、
テストの中身を取り出して test/unit 抜きで実行すると異常終了しないケースです。

そういうケースでは、test/unit というライブラリを削っていって
再現スクリプトを作るのですが、それがたいへんなのです。

ruby 自体に問題がある場合にはそういうはめに陥るので、
ユニットテストフレームワークは単純なほうが良いと思っています。

説明ありがとうございます。

それでは、もともとのテストが意図していない場所で問題が発生し
てしまう確率が高くなるのも問題と考えていますか?
それとも、それ自体は問題ではなく、異常終了が発生してしまった
ときに原因を見つけるのが大変になってしまうことだけが問題と考
えている、ということですか?

ユニットテストフレームワークはあんまり影響を与えない方がよい、
というように読めたので、どちらかというと、前者なのかなぁとい
う感じがしました。

=end

#10 Updated by Akira Tanaka about 5 years ago

=begin
2010年5月29日0:13 Kouhei Sutou kou@cozmixng.org:

それでは、もともとのテストが意図していない場所で問題が発生し
てしまう確率が高くなるのも問題と考えていますか?

原因の追求が簡単なら問題ないかもしれませんね。
--
[田中 哲][たなか あきら][Tanaka Akira]

=end

#11 Updated by Yusuke Endoh about 5 years ago

=begin
遠藤です。

2010年5月24日16:45 Tanaka Akira akr@fsij.org:

2010年5月19日21:04 Yusuke Endoh redmine@ruby-lang.org:

test/unit を他の互換なテストフレームワーク (Test::Unit 2 とか?) に入れ
替えることを検討した方がいいかも知れません。

経験上、1.8 の test/unit では、test/unit 内で異常終了 (SEGV とか) したとき、
再現スクリプトを最小化するのがとてもたいへんだったので、もとに戻すのは
良い方法とは思えません。

test/unit は ruby core のためのテストフレームワークではないので、
それを理由に通常の Ruby ユーザに不便を強いるのは変かなと思いました。

test/unit は置き換えつつ、core の test/ruby は minitest をベースに
した専用テストフレームワークで実行してもいいんじゃないですかね。
まあ、その作業をやってくれる人がいなければ始まりませんけれど。

--
Yusuke Endoh mame@tsg.ne.jp

=end

#12 Updated by Shyouhei Urabe almost 5 years ago

  • Status changed from Open to Rejected

=begin
本件はrejectされたという認識です。違ったら更新してください。
=end

Also available in: Atom PDF