ruby-trunk-changes r49658 - r49664

今日は主に一昨日の Windows での File.rename の同一ドライブかどうかの判定の再修正がありました。

nobu: r49658 2015-02-20 17:19:26 +0900

r49634 の Windows での File.rename でのドライブをまたいだ移動の検出を書き直しています。 GetFileInformationByHandle() でドライブの serial number というのが取得できるそうで、それで比較するようにしています。 [ruby-core:68162] [Bug #10865]

svn: r49659 2015-02-20 17:19:35 +0900

version.h の日付更新。

nobu: r49660 2015-02-20 17:19:48 +0900

File の atime の設定が Windows では遅延されるためにテストを skip するようにした(r46136)のですが、テスト全体が skip になってしまっていたので、対象の assertion のみ分岐で回避するように変更しています。

nobu: r49661 2015-02-20 17:20:05 +0900

テスト test/ruby/test_file_exhaustive.rb のユーティリティメソッド make_tmp_filename で作成したパス名を @hardlinkfile というインスタンス変数に代入していたのをやめています。 このインスタンス変数は setup で初期化されているもので、たまたま最後の make_tmp_filename の呼び出しの結果が @hardlinkfile に代入されていたので影響がなかったけどまあテストのバグ修正ですね。

nobu: r49662 2015-02-20 17:20:10 +0900

test/ruby/test_file_exhaustive.rb にファイルの同一性をチェックする File.identical? メソッドについてのテストを追加しています。 IO オブジェクトとファイルパスでもチェックできたんですね。

nobu: r49663 2015-02-20 17:22:53 +0900

r49658 の ChangeLog エントリに ML とチケットの参照を追記しています。 [ruby-core:68162] [Bug #10865]

nobu: r49664 2015-02-20 17:27:14 +0900

r49658 の Windows での同一ドライブかどうかのチェックで一時的に HANDLE を取得しているので、例外発生時などに HANDLE が閉じられないままにならないように rb_ensure() を利用するように修正しています。