ruby-trunk-changes r30834 - r30842

特殊なケースでのメモリエラーの修正と。 minitest ライブラリの test-unit(1.8 時代のテストライブラリ)との互換性の改善が行なわれています。あと rubyコマンドラインオプションの追加(--require, --gem) があります。

nobu:r30834 2011-02-11 11:39:05 +0900

fake.rb のテンプレートで CROSS_COMPILING という定数を remove_const しているところ、元々定数が未定義だったら飛ばすようにしています。

nobu:r30835 2011-02-11 12:03:26 +0900

configure --disable-rubygems オプションを追加して、これが指定された時は自動的に rubygems を組み込まなくしているみたいです。明示的に require するのはできそう。デフォルトはこれまで通りの挙動(rubygems が組み込まれる)の --enable-rubygems です。

nobu:r30836 2011-02-11 12:06:50 +0900

rubyコマンドラインオプションに --require(-r と同等)と --gem を追加。--gem は Kernel#gem のように gem のパッケージバージョンの指定をするようです。この仕様追加の話どこかでしてましたっけ?

nobu:r30837 2011-02-11 14:29:42 +0900

test_io_m17n.rb と test_transcode.rb テストメソッド名がかぶっていたのがあったのを修正。ついでにちょっと assert の移動も。

nobu:r30838 2011-02-11 14:33:21 +0900

Test::Unit::Assertions#assert_not_match というメソッドの alias を assert_no_match という名前で定義しています。後方互換性のためとのこと。実際 test ディレクトリの下のテストでは assert_no_match というメソッドがたくさん使われています。

nobu:r30839 2011-02-11 16:57:05 +0900

test_transcode.rb メソッド名が重複していて実行されていなかったテストケースに間違った assert 文があったので修正しています。

nobu:r30840 2011-02-11 19:45:34 +0900

Thread オブジェクトの特異クラスのインスタンス変数へ代入すると二重 free のメモリエラーが発生する不具合を修正しています。RUBY_FREE_UNLESS_NULL というマクロで free したポインタを NULL クリアするようにしています。また ruby の終了処理時に内部的に利用している Array オブジェクトを rb_ary_free() で強制的にメモリ解放させています。[Bug #4389] [ruby-core:35192]

nobu:r30841 2011-02-11 21:41:58 +0900

lib/tst/unit.rb に AutoRunner を追加して testrb やテストなどのアプリケーションではそれを利用するようにしています。また OptionParser の作りかたを少しリファクタリングして、新しいオプション -b/--basedir を追加しています。後方互換性の改善とコメントにあるのは訊いてみると 1.8 で添付されていた test-unit ライブラリとの互換性を保つようにしているそうです。

nobu:r30842 2011-02-11 21:54:04 +0900

test/ruby/test_m17n_comb.rb で例外のメッセージのチェックをしているようにみえてしていなかったのを修正。assert_raise(except, regexp){ ... } でいかにも regexp がメッセージのチェックかのように書かれていましたが、そうじゃないみたいです。 assert_match(regexp, assert_raise(except){...}.message という書きかたに変更されています。assert_raise の第2引数は ML へのリンクなどエラー時のメッセージを書くようですね。 assert_raise は複数引数(例外クラスやモジュール)を受け付ける(どれかの例外が発生すればよい)ので、最後の引数が文字列だったらメッセージと解釈されるそうです。