ruby-trunk-changes r46564 - r46585

今日は主にテストのメンテナンスと Kernel#snprintf の不具合修正、ENV.shift の Windows 環境でのメモリリークの修正などがありました。

nobu: r46564 2014-06-26 22:30:08 +0900

sprintf.c の GETASTER() という関数マクロで引数の展開にかっこをつけていたのをやめています。一般的に関数マクロの引数を使うところでは演算子の優先度などで意図しない評価結果にならないようにかっこをつけるので、過去にマクロをチェックしてかっこを追加するリファクタリングがあったりしましたが、ここではかっこをつけると例外メッセージにそのままかっこが含まれてしまうため不要ということで削っています。

kazu: r46565 2014-06-26 22:35:46 +0900

r46557 の ChangeLog エントリの typo 修正。

nobu: r46566 2014-06-27 00:03:04 +0900

eval.c の setup_exception() で未初期化の変数の警告を除去するため初期化を追加。

svn: r46567 2014-06-27 00:03:08 +0900

version.h の日付更新。

nobu: r46568 2014-06-27 03:25:13 +0900

今は test/lib の下に置かれている test/unit の assert_raise_with_message で msg が省略された時のデフォルトのメッセージを追加しています。

nobu: r46569 2014-06-27 03:41:57 +0900

sprintf("%1$*d", 3) のように幅や精度を引数で指定する指示子を使った時に引数が1つしかないと、それが表示する値と精度/幅の両方で使いまわされていた不具合を修正しています。 [ruby-dev:48330] [Bug #9982]

nobu: r46570 2014-06-27 05:33:34 +0900

Windows 版での ENV.shift で値があった時に後始末をしていなかったのでメモリリークしていた不具合を修正しています。

hsbt: r46571 2014-06-27 12:35:51 +0900

r46559 で Psych::ENGINE が (YAML には Psych が代入されるので、つまりは YAML::ENGINE が)定義されなくなったのに rubygems が syck を使う(gem パッケージで入れる時とかですね)かどうかのチェックのために参照していたので const_defined? でチェックしてから参照するようにしています。

naruse: r46572 2014-06-27 15:25:44 +0900

標準添付ライブラリ uriURI.regexp のテストで obsolete になったため EnvUtil.suppress_warning を使って警告を抑制するようにしています。

naruse: r46573 2014-06-27 15:28:18 +0900

r46568 で assert_raise_with_message のデフォルトメッセージを追加したのを revert しています。 SystemStackError が発生した時に inspect で深い backtrace が表示されてしまうのを避けるためのようです。

hsbt: r46574 2014-06-27 15:32:59 +0900

rubygems のテスト用のテストケースクラスなどを定義している lib/rubygems/test_case.rb で gem "minitest", '~> 4.0' を指定しているところで捕捉する例外に Gem::LoadError を追加しています。 minitest が標準添付ライブラリ から外れた時からここが失敗して rubygems のテストが動いてなかったそうです。

nobu: r46585 2014-06-27 23:34:31 +0900

ENV のメモリリーク関係の修正のテストで、あらかじめ対象の操作を少し(50回)ほどやっておいてから繰り返し実行してリークがないか確認するようにしています。対処の処理を実行するために必要なオブジェクトが増えたりもするので、まだ実行していない状態から初回の実行も含めてメモリ使用量を比較してしまうと必要な増加分もカウントしてしまってうまく検出できないのを避けるためだろうと思います。