ruby-trunk-changes r36501 - r36523

今日は Windows 関係の、特にテストの修正が主でした。

kazu:r36501 2012-07-23 23:38:24 +0900

ChangeLogtypo というか体裁の修正。

nobu:r36502 2012-07-23 23:58:42 +0900

AIXBeOS などの環境でビルドするために EXTDLDFLAGS を DLDFLAGS に含めるようにしています。また r36338 で公開シンボルの prefix に対応して拡張ライブラリのエントリポイントの関数名を TARGET_ENTRY として設定する処理を enc/Makefile.in に追加しています。 [ruby-core:46600] [Bug #6768]

naruse:r36503 2012-07-24 04:04:15 +0900

Thread.control_interrupt のテストで Thread が特定のブロックに入るのを待つために Queue を使っていたのですが、Queue#<< の実行で Mutex#synchronize を使っていてここで例外が rescue で捕捉されて無視されてしまうタイミングが存在したので Queue を使うのをやめて変数を使って Thread.pass で待つようにしています。

svn:r36504 2012-07-24 04:04:19 +0900

version.h の日付更新。

naruse:r36505 2012-07-24 06:37:39 +0900

rexml と rss のテストで主に未使用の変数の警告除去。

drbrain:r36506 2012-07-24 07:03:30 +0900

String#sub の rdoc の文言とマークアップを修正しています。文言の修正は正直どう違うのかよくわからない……。 [ruby-core:46313] [Bug #6719]

drbrain:r36507 2012-07-24 07:23:41 +0900

Time#sec の rdoc を修正。 うるう秒についての解説を追加しています。 [ruby-core:46535] [Bug #6749]

luislavena:r36508 2012-07-24 08:10:03 +0900

Win32OLE のテストで Windows の 64bit 環境の検出方法が間違っていたのを修正しています。 RUBY_PLATFORM をmingw64 じゃなくて x64-mingw で判定するようにしています。 [ruby-core:46651] [Bug #6782]

luislavena:r36509 2012-07-24 08:32:29 +0900

Windowsファイルシステムエンコーディングのテストで日本語環境の Windows を前提として "\u3042" というリテラルを利用していたのが問題だったので、期待するバイト列表現を使ってテストするようにしているようです。 [ruby-core:46589] [Bug #6765]

drbrain:r36510 2012-07-24 09:31:31 +0900

RubyGems 1.8.24 をマージしています。証明書ファイル(.pem)をインストールするようにして HTTPS でのインストールが一部環境で(Windows?)できなかった不具合に対応しています。 [ruby-core:45943] [Bug #6665]

naruse:r36511 2012-07-24 09:42:22 +0900

r36475 で iCloud を使っている時の IPv6UDP ソケットに繋げられないためにテスト時に使わないように回避しているところは darwin10 と darwin11 のみの不具合だったらしくバージョンもチェックするようにしています。

usa:r36512 2012-07-24 11:36:15 +0900

unpack("M") のテストがテストメソッド名が重複して再定義されていたため実行されていなかったのでひとつのメソッドにまとめています。

naruse:r36513 2012-07-24 12:09:32 +0900

socket の UDP サーバのテストでエラー時のメッセージにサーバにパケットが到達していたのかどうかがわかるようにしています。

usa:r36514 2012-07-24 12:14:31 +0900

test/ruby/test_dir_m17n.rb でプラットフォームの判定をしているところをリファクタリングRuby では =~ での正規表現マッチは regexp =~ string が正統(String#=~ が 引数が Regexp の時に re =~ self に dispatch してくれるので右辺が String ならたまたま動きますが)なのでそのように修正しています。

usa:r36515 2012-07-24 12:32:55 +0900

で r36514 で編集ミスで Syntax Error になっていたのを修正。

usa:r36516 2012-07-24 12:36:29 +0900

test/ruby/test_dir_m17n.rb で ASCII-8BIT の文字列をファイルシステムエンコーディングに変換しようとしていたのですがこれは常に失敗するということで一旦 force_encoding で EUC-JP にしてから変換するようにしています。

nobu:r36517 2012-07-24 13:24:20 +0900

String#unpack の指示子 "M" のテストを修正。不正なエンコードされた文字列の時に空文字列にするのではなくそのままその文字列を返すようになっているのでテスト内容をそれに合わせています。

usa:r36518 2012-07-24 15:05:29 +0900

Windows 版では IO のソケットをリストで管理しているのですが、そこにソケットの種類(family)を flag の上位ビットを使って格納するようにして、rb_win32_getsockname() で getsockname() が WSAEINVAL というエラーを返した時にこの family を使って結果を生成して返すようにしています。 Windows で getsockname() が状態によってエラーになる(close されているとか?)のでエミュレートしているようです。

naruse:r36519 2012-07-24 17:47:51 +0900

r36516 で test/ruby/test_dir_m17n.rb のファイル名文字列のエンコーディング変換を 一旦 EUC-JP に force_encoding するようにしていた所は、ファイルエンコーディングが US-ASCII か ASCII-8BIT なら変換せずそのままにして、それ意外の場合は String#encode の第2引数の変換元エンコーディングを指定することで変換するようにしています。

nobu:r36520 2012-07-24 18:36:14 +0900

よくわからないのですが Windowsファイルシステムエンコーディングのテストで使っている 0x00c7 という UTF-8文字コードMac OS X ではエラーになるらしく(エラーを確認していないのでどういう理由かはわかりませんが) 0x00c6 に変更しています。

naruse:r36521 2012-07-24 18:57:59 +0900

r36519 で test/ruby/test_dir_m17n.rb でファイルシステムエンコーディングが US-ASCII か ASCII-8BIT だったら変換しないようにしていましたが、常に変換はするようにしています。force_encoding をやめて String#encode の第2引数で変換元エンコーディングを指定するようにするという変更だけ残しています。

shirosaki:r36522 2012-07-25 00:12:26 +0900

x64-mingw32 の環境での pow(3) の精度が悪い? らしく rb_w32_pos() という関数を導入して powl(3) を利用するようにしています。 [ruby-core:46686] [Bug #6784]

svn:r36523 2012-07-25 00:12:30 +0900

version.h の日付更新。