ruby-trunk-changes r46073 - r46123

今日はたくさん変更がありましたが、主に minitest 削除の関連とドキュメントの修正、テストでの Tempfile, Thread のリーク検出とその修正でした。

akr: r46073 2014-05-24 15:29:23 +0900

test/lib/minitest の未使用のファイルを削除しています。

akr: r46074 2014-05-24 16:09:29 +0900

test/lib/minitest からテスト並行実行の機能に関する部分を削除して、関連する minitest 自体のテストも削除しています。 テスト結果の出力の改行の混じりかたが一定でなくなるのを防ぐためみたいです。 [ruby-core:54905]

normal: r46075 2014-05-24 16:22:54 +0900

Process.groups や Process.groups= の実装で ALLOCA_N() を利用していたところを ALLOCV_N() に置き換えて、大きなバッファをマシンスタック上に確保しないようにしています。

nobu: r46076 2014-05-24 17:14:20 +0900

Prime.prime? の rdoc 用コメントの typo 修正。

akr: r46077 2014-05-24 18:46:02 +0900

標準添付ライブラリ benchmark のテスト test/benchmark/test_benchmark.rb で minitest を直接使って書かれていたところを、そのラッパである test/unit (今は test/lib の下にコピーされたもの)を使って書き直しています。

akr: r46078 2014-05-24 19:20:41 +0900

test/lib/minitest/spec.rb も ruby 自体のテストでは利用していなかったので削除しています。

akr: r46079 2014-05-24 20:12:10 +0900

拡張ライブラリ socket の UDPSocket のテストで IPv6 link-local なアドレス (fe80: で始まるアドレス)は CI でエラーになることがあったりするのでこのテストでは利用しないようにしています。

hsbt: r46080 2014-05-24 22:29:40 +0900

test/lib/minitest/.document を削除しています。 test の下に置かれるようになったので rdoc への指定は不要になったため。

hsbt: r46081 2014-05-24 22:40:28 +0900

Array#shuffle と #shuffle! の rdoc 用コメントにサンプルを追加しています。 https://github.com/ruby/ruby/pull/612

nobu: r46082 2014-05-24 23:04:40 +0900

internal.h から rb_vm_bugreport() のプロトタイプ宣言を削除しています。 vm_core.h にも存在しているため重複していたとのこと。

zzak: r46083 2014-05-25 06:30:42 +0900

Array.new の rdoc 用コメントで第2引数を渡す時の仮引数名を変更しています。 https://github.com/ruby/ruby/pull/610

svn: r46084 2014-05-25 06:30:53 +0900

version.h の日付更新。

zzak: r46085 2014-05-25 06:52:31 +0900

Object#instance_eval の rdoc 用コメントにブロック付きで呼び出された時のブロックパラメータについての説明を修正しています。 https://github.com/documenting-ruby/ruby/pull/28

hsbt: r46086 2014-05-25 08:54:17 +0900

標準添付ライブラリ logger で Logger::Period の定義位置を Period を include する LogDevice よりも前に移動しています。

hsbt: r46087 2014-05-25 09:07:19 +0900

拡張ライブラリ openssl のテストで OpenSSL::SSL::SSLSocket の read_nonblock のテストを追加しています。 https://github.com/ruby/ruby/pull/547

svn: r46088 2014-05-25 09:07:22 +0900

r46087 で追加された test/openssl/test_partial_record_read.rb の svn property 設定。

akr: r46089 2014-05-25 09:41:18 +0900

test/lib/minitest/unit.rb でテストの実行前後の Thread と Tempfile を比較して、テスト終了時に後始末されていない Thread と Tempfile を出力するようにしています。

zzak: r46090 2014-05-25 09:43:14 +0900

Module#instance_methods のサンプルを追加して引数の解釈についての説明を強化しています。
https://github.com/documenting-ruby/ruby/pull/31

hsbt: r46091 2014-05-25 09:58:52 +0900

標準添付ライブラリ fileutils の FileUtils.chown がデフォルトで再帰的な挙動をしないことを確認するテストを追加しています。コメントと ChangeLog の記述が chmod になってますね。チケットの記述でも混乱が観られるけど多分 typo ですよね。 [ruby-core:59325] [Feature #9303]

hsbt: r46092 2014-05-25 09:58:54 +0900

標準添付ライブラリ fileutils の FileUtils.chown_R のテストを追加しています。所有ユーザの変更は root 権限がないとテストできませんけどね。 [ruby-core:59641] [Feature #9383]

zzak: r46093 2014-05-25 10:02:59 +0900

irb の rdoc 用コメントのサンプルの syntax error を修正しています。 https://github.com/documenting-ruby/ruby/pull/32

zzak: r46094 2014-05-25 10:17:52 +0900

Fiber#transfer の rdoc 用コメントのインデント修正。 https://github.com/documenting-ruby/ruby/pull/33

zzak: r46095 2014-05-25 10:20:30 +0900

Enumerable#find, #detect の rdoc 用コメントのサンプルコードが detect だけ使っていたので find も使うようにしています。 https://github.com/documenting-ruby/ruby/pull/34

zzak: r46096 2014-05-25 10:36:05 +0900

doc/regexp.rdoc に空白文字にマッチさせるための正規表現の方法を追記しています。 https://github.com/ruby/ruby/pull/606

zzak: r46097 2014-05-25 11:33:51 +0900

lib/yaml.rb から Psych::EngineManager を削除しています。 syck と psych を選択する機能を消しているようです。 [ruby-core:54665] [Bug #8344]

nobu: r46098 2014-05-25 11:56:36 +0900

ruby_snprintf() などのフォーマット文字列を扱う関数で "%s" の精度の扱いが間違っていた不具合を修正しています。 [ruby-core:62737] [Bug #9861]

zzak: r46099 2014-05-25 12:00:17 +0900

Enumerator#peek の rdoc 用コメントのサンプルで、終端まで達した後の peek の挙動を示すようにサンプルを修正しています。 [ruby-core:62462] [Bug #9814]

nobu: r46100 2014-05-25 12:15:32 +0900

r45995 のマシンスタックオーバフローの検出に ucontext_t を利用する実装を Mac OS X にも適用しようとした時に条件分岐を誤って いたのを修正、と思いきやこれは勘違いで後ほど revert されています。 また Mac OS X 版での構造体メンバ名を修正しています。

nobu: r46101 2014-05-25 12:15:49 +0900

vm_dump.c の backtrace() の定義のスタイル修正。

naruse: r46102 2014-05-25 12:33:22 +0900

r46097 の Psych::EngineManager の削除を revert しています。 [ruby-core:54665] [Bug #8344]

svn: r46103 2014-05-25 12:33:26 +0900

r46102 で追加(復活)したファイルの svn property 設定。

akr: r46104 2014-05-25 12:34:27 +0900

r46089 で追加したテストで leak した Thread と Tempfile の出力時にソートして出力するようにしています。

hsbt: r46105 2014-05-25 12:43:35 +0900

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

nobu: r46106 2014-05-25 12:46:55 +0900

error.c の report_bug() をいくつかの関数に分解するリファクタリングと、ucontext_t を引数に受け付けることで SEGV などの発生時のマシンレジスタの情報を表示するようにしています。 https://github.com/ruby/ruby/pull/584

nagachika: r46107 2014-05-25 12:51:50 +0900

r46091 のテストのコメント部分のメソッド名の typo も修正しています。

akr: r46108 2014-05-25 14:22:49 +0900

openssl のテストで Thread を作りっぱなしだったところを明示的に join するようにしています。テストで Thread と Tempfile の leak を表示するようにしたのでそれを元に後始末する変更を開始したようです。

akr: r46109 2014-05-25 15:27:14 +0900

標準添付ライブラリ webrickWEBrick::Utils::TimeoutHandler で生成する Thread の inspect の特異メソッドを定義してクラス名(WEBrick::Utils::TimeoutHandler)を表示するようにしています。テストで leak しているけどこの Thread は管理されてないので消しようがないのでとりあえず判別のため名前をつけているということでしょうか。

akr: r46110 2014-05-25 16:32:26 +0900

Rinda::RingServer のテストでも Thread の終了を待つようにしています。

akr: r46111 2014-05-25 16:58:02 +0900

r46089 でテスト前後で Thread の一覧を得るのに ObjectSpace.each_object(Thread) を使っていたのを Thread.list を使うようにしています。

akr: r46112 2014-05-25 17:15:08 +0900

r46089 のテスト前後の Thread と Tempfile を取得するのに各テストメソッドの前にリストを再取得していたのを、テスト全体の前と、各テストメソッドの後に取得する(これを次のテストメソッドの前の取得ぶんとする)ように修正して取得回数を減らしています。

nobu: r46113 2014-05-25 20:00:26 +0900

r46113 でマシンスタックオーバフローの検出に ucontext_t を利用する条件を変更した部分を revert しています。あーなるほど…ここの #if の中身は空で #elif が利用するケースなんですね。 [ruby-core:62746] [Bug #9862]

nobu: r46114 2014-05-25 20:31:52 +0900

configure で Mac OS X 10.5 以降では ucontext.h を持っていないとしていたのをやめて getcontext(3)/setcontext(3) の関数がないものとするようにしています。 マシンスタックオーバフロー検出に用いるために ucontext_t という型が必要なため。

akr: r46115 2014-05-25 22:44:05 +0900

r46089 のテストでの Thread と Tempfile の leak 検出で、Thread は各テストメソッド前後で比較するようにしていますが、Tempfile はテストクラス単位で比較するようにしています。 ObjectSpace.each_object の呼び出し頻度を押さえるためでしょうか。

nobu: r46116 2014-05-25 22:53:25 +0900

minitest のテスト(lib/test の下のコピーされたもののテストですが)で system にコマンドライン文字列を渡していたのを、引数に分解して複数の引数で渡すことで shell の解釈を通さないようにしています。クオートは portable ではないからとのこと。

akr: r46117 2014-05-25 23:00:16 +0900

標準添付ライブラリ resolv のテストでブロック付きの Tempfile.open のかわりに Tempfile.create を使うことで Tempfile の削除漏れを修正しています。

akr: r46118 2014-05-25 23:16:02 +0900

minitest 自体で期待している結果と実際の結果の差分を取得するために利用している Tempfile の削除漏れがあったのを修正しています。

akr: r46119 2014-05-25 23:32:03 +0900

File と JSON のテストの一時ファイルを削除するようにしています。

akr: r46120 2014-05-26 01:03:23 +0900

r46089 のテストでの Tempfile の leak の表示を1行にまとめて表示していたのを1ファイル1行で出力するように修正しています。

svn: r46121 2014-05-26 01:03:33 +0900

version.h の日付更新。

akr: r46122 2014-05-26 01:16:38 +0900

テストで leak している Thread も同じく1つ1行で出力するようにしています。

zzak: r46123 2014-05-26 01:41:40 +0900

標準添付ライブラリ csvCSV.new の第一引数が nil の時に明示的に ArgumentError を発生させるようにしています。 csv メンテナの jeg2 が旅行中のため代理コミットとのこと。 https://github.com/ruby/ruby/pull/580