ruby-trunk-changes r52304 - r52324

今日は主にテストの整理や NameError#receiver がらみの修正などがありました。

nobu: r52304 2015-10-27 23:14:18 +0900

r52257 で導入された --frozen-string-literal-debug オプションのための内部的なインスタンス変数が Marshal.dump した時に出力されないようにしています。

nobu: r52306 2015-10-27 23:36:35 +0900

r52304 のテストを追加しています。

naruse: r52309 2015-10-28 05:18:15 +0900

rubygems のテストで make のコマンド名を指定するのに環境変数 make ではなく MAKE をすりかえるようにしています。

svn: r52310 2015-10-28 05:18:34 +0900

version.h の日付更新。

naruse: r52311 2015-10-28 05:47:17 +0900

テストでわざと SIGSEGV や SIGQUIT を送ってプロセスを殺すようなテストをするために子プロセスを起動する際に :rlimit_core オプションを指定して core dump の出力を抑制するようにしています。 CI で core dump のために時間がかかるのを抑制するためだそうです。

naruse: r52312 2015-10-28 05:47:23 +0900

rubygems の Gem::Commands::ServerCommand のテストで Solaris では port 番号の指定に -p http を指定すると例外が発生することから RUBY_PLATFORM でチェックして Solaris の時は該当する assertion を飛ばすようにしています。 ngoto さんによると Solaris ではデフォルトで /etc/inet/services に http のエントリがないため名前でポート番号を指定できないためだそうです。

naruse: r52313 2015-10-28 05:51:29 +0900

test/ruby/test_gc.rb で未使用のローカル変数の警告除去。

naruse: r52314 2015-10-28 06:00:07 +0900

標準添付ライブラリ ring (TupleSpace を使った Name Server) で Linux での SO_REUSEPORT は multicast 用のソケットには set_sockopt できないそうなので、RUBY_PLATFORM をチェックして Linux ではかわりに SO_REUSEADDR を使うようにしています。

naruse: r52315 2015-10-28 11:52:25 +0900

test/ruby/test_process.rb でも未使用変数の警告除去。

naruse: r52316 2015-10-28 11:52:31 +0900

r52314 の標準添付ライブラリ ring の Linux での SO_REUSEPORT 利用についての変更を revert しています。 CI 向けに入れたけどこれは関係なかったとかかな。

nobu: r52317 2015-10-28 13:26:22 +0900

ripper の += のような代入記号つき二項演算子の parse のテストで、イベントのブロック呼び出しのみでなく戻り値もチェックするようにしています。

nobu: r52318 2015-10-28 13:29:41 +0900

ripper の obj.?meth= のような文法の追加対応。 [Feature #11537]

naruse: r52319 2015-10-28 14:40:04 +0900

r52311 でテスト時の Process.spawn に :rlimit_core オプションを追加してたところは、[0, max] のように hard limit を指定するため Process.getrlimit で取得していましたが soft limit だけ指定もできたので Process.getrlimit は省いて 0 を指定するようにしています。

nobu: r52320 2015-10-28 15:23:16 +0900

rb_name_err_new() という NameError 例外を生成する関数とそれを利用した関数マクロ rb_name_err_raise(), rb_name_err_raise_str() を追加しています。続く変更のための布石です。 [Feature #10881]

nobu: r52321 2015-10-28 15:24:12 +0900

r52320 で追加した rb_name_err_raise() と rb_name_err_raise_str() を使って、定数の参照時の NameError ("uninitialized constant") の receiver メソッドで名前空間の親を返すようにしています。この時点では message に receiver を埋め込むようになっています。 [Feature #10881]

nobu: r52322 2015-10-28 15:36:13 +0900

r52320 および r52321 の続きで NameError に内部的なインスタンス変数を追加してそこに receiver をセットするようにしています。 [Feature #10881]

nobu: r52323 2015-10-28 16:56:13 +0900

NameError 例外の発生するテストで inspect の結果を確認する場合に Encoding.default_external を指定して実行するようにしています。 [Feature #10881]

nobu: r52324 2015-10-28 17:01:48 +0900

File.realpath のテストで "A" に non-ascii 文字を追加したファイル名への symbolic link を "a" という名前で作るようにしていましたが、ファイルシステムが大文字小文字を区別しないものでなおかつ filesystem encoding が ascii 文字のみ受け付ける環境だと "a" から "A" への symlink を作ることになって同じファイルになってしまうので、symbolic link のほうの名前を "x" に変更しています。