ruby-trunk-changes r29784 - r29790

自画自賛になってしまいますが Heroku 上に作った Web アプリが超便利です。隙間の時間に iPod touch でちょこちょことログ確認してメモできるのでかなり楽になりました。気になったところを追ったり長文を書くのはさすがに touch では辛いですけど。Web アプリ作るのって楽しいですね。
ちなみに Heroku のタイムゾーンの問題は

heroku config:add TZ=Asia/Tokyo

することで解決しました。ActiveSupport が使えれば Time.zone というのを使って書けるそうですが、このためだけに ActiveSupport 入れるのもちょっと、ということで今回は見送り。

tenderlove:r29784 2010-11-14 13:46:08 -0800

OpenSSL::SSL::SSLSocket#cert メソッドで T_DATA から取得したポインタをチェックしているところで条件が逆転していて SEGV していたのを修正。[ruby-dev:42573] [Bug #4055]

svn:r29785 2010-11-14 13:46:10 -0800

version.h の日付更新。

naruse:r29786 2010-11-14 18:37:19 -0800

CGIのテストで時刻を取得するタイミングによって失敗する可能性のあったテストを修正。

naruse:r29787 2010-11-14 18:37:23 -0800

r29784 で追加されたテストで OpenSSL::SSL::SSLSocket を作成するために STDIN を渡しているけど、端末から切り離されたプロセスでは失敗してしまうので __FILE__ を open して渡すようにしています。

tenderlove:r29788 2010-11-14 18:46:55 -0800

同じく OpenSSL::SSL::SSLSocket#cert のテストの修正。例外が発生しないことのテストなのでただ呼ぶんじゃなくて assert_nil で明示的にテスト内容を指定。

tenderlove:r29789 2010-11-14 18:47:05 -0800

racc にて、メソッドの動的定義のために __send__ を使っていたところを class_eval を使うように変更しています。

naruse:r29790 2010-11-15 18:09:39 +0900

子プロセスが終了した時に SIGCHLD のシグナルハンドラが呼ばれるか、というテスト(ruby/test_process.rb test_wait_and_sigchild)のタイミング問題を回避、とコメントにはあります。
なのですが、削られている後半の sleep するループは、waitpid は return するけど、まだ SIGCHLD は来てない or シグナルハンドラの実行が完了していないという状態で assert_equal に入るのを避けるためのように思えるので、削ってしまうとタイミングによって Failure になるような気がします。