ruby-trunk-changes 2021-05-21

今日は標準添付ライブラリ rdoc の不具合修正とバージョン更新や拡張ライブラリ ripper の一行メソッド定義を parse した時の結果の変更などがありました。

[c711093559] Nobuyoshi Nakada 2021-05-20 11:15:43 UTC

拡張ライブラリ socket のテストで適当にポート番号を乱数で決める時に 49152 以上の番号を使っていたのを Windows 環境では 50000 以上からに変更しています。 Windows ではサービス群が若いポート番号を既に使ってることが多いので失敗しがち、ということみたいです。まあでも他の環境でもたまたま被ることはあってテストもそれを許容するように書かれてそうですが……と思ったけどよく参照されてるメールをみると test/socket/test_socket.rb のほうではなくて test/socket/test_addrinfo.rb のほうの random_port を使ったテストのほうで、さらに乱数の seed が固定されてるので常に失敗してしまうという問題だったようです。捕捉して無視する例外を決める errors_addrinuse で mingw の時だけ Errno::EACCESS を追加してたのを mswin でも追加するようにするのが良いんじゃないでしょうか。 [ruby-dev:42661]

[2e919e4a64] Jeremy Evans 2021-05-20 19:24:41 UTC

doc/syntax/literals.rdoc のヒアドキュメントの文法についての記述の英文法の修正。 [ruby-core:103903] [Misc #17872]

[a7fae2af72] git 2021-05-20 19:25:55 UTC

version.h の日付更新

[a35d137a37] Nobuyoshi Nakada 2021-05-20 13:57:33 UTC

File.fnmatch および File.fnmatch? の rdoc 用コメントを dir.c から ruby 実装の組み込みメソッド実装の dir.rb のほうに移動しています。 C ソース内に書くのは C のコメントとの衝突が厳しいからみたいです。ruby 版のほうには後置 if で実際には実行されない class 文内でメソッド定義が追加されてて、doc を騙してメソッドのドキュメントとして認識させているようです。

[9edad0df74] Nobuyoshi Nakada 2021-05-21 01:34:28 UTC

make の -O および -W というショートオプションの記法で引数を受け付ける記法を tool/rbinstall.rb の --mflags に渡すとオプションの有無のチェックが誤作動するということで、削除してから判定するようにしているようです。 [ruby-core:103891] [Bug #17870]

[b1c73f239f] aycabta 2021-05-02 11:52:23 UTC

標準添付ライブラリ rdoc で parse 対象のファイルリストの内容チェックのため Kernel#open を使って開いていたのを File.open を使って誤ってパイプ経由でコマンド実行が起きないように修正しています。

[0ee24b4fab] aycabta 2021-05-02 11:52:41 UTC

標準添付ライブラリ rdoc のバージョンを 6.3.1 に更新しています。

[21d24767e8] Yusuke Endoh 2021-05-10 22:48:51 UTC

標準添付ライブラリ rdoc の gemspec ファイルの spec.files を最新の状態に追随させています。

[a298bdf860] Nobuyoshi Nakada 2021-05-14 16:24:15 UTC

標準添付ライブラリ rdoc で Dir.children メソッドを利用していましたが ruby 2.4 以前ではこのメソッドがまだ存在していないので Dir.entries を利用するように書きかえています。

[10e63f3f56] Nobuyoshi Nakada 2021-05-14 16:26:51 UTC

標準添付ライブラリ rdoc のテストでファイル名に垂直タブを含むファイルを FileUtils.touch で作ろうとしているところで Windows 環境ではそもそもファイルパスとして許容されないようで Errno::EINVAL が発生するので、その場合はテストをスキップ(omit)するようにしています。

[f18a0b7654] Nobuyoshi Nakada 2021-05-14 16:08:33 UTC

標準添付ライブラリ rdoc のテストで minitest のかわりに test-unit のスタイルの assertion メソッドを利用するように変更しています。

[59b327aa58] Nobuyoshi Nakada 2021-05-17 10:33:12 UTC

標準添付ライブラリ rdoc の gemspec ファイルで依存する最小 ruby バージョンを 2.5.0 からに引き上げています。そして a298bdf8606bda9c9868c44618c5b70a96c2712c の Dir.children を使わないようにする変更は revert しています。

[817764bd82] Koichi Sasada 2021-05-18 08:11:39 UTC

609de71f043e8ba34f22b9993e444e2e5bb05709 でブロック内の rescue と ensure 両方ある時に ensure 内で発生した例外が並列する rescue で捕捉されちゃう不具合修正をした時に、実際には不要な時にも ensure 用のコードブロックを追加してしまっていたそうなので条件をより詳しくチェックするようにしています。

[e9974a466a] Nobuyoshi Nakada 2021-05-20 11:15:43 UTC

c71109355987f290257e977c1634db6328916786 の socket のテストでポート番号をランダムに決める random_port を test/socket/test_socket.rb で定義されてるものだけ変更してましたが e9974a466ac7edcb8035f5f7bc65c4c6731e2ee2 も同様に変更するようにしています。また test/socket/test_socket.rb のほうの errors_addrinuse で mingw の時に許容する例外に Errno::EACCESS を追加するようにしています。なんだけど test/socket/test_socket.rb の errors_addrinuse では既に mingw で追加されてた(けど arton さんのところでエラーになった)ということは mswin の時も追加したほうが良いんじゃないかな。 [ruby-dev:42661]

[050bb06e66] Nobuyoshi Nakada 2021-05-21 06:34:23 UTC

拡張ライブラリ ripper のテストにメソッドのトップレベルに begin なしで書く rescue と ensure 節を parse した結果についてのテストを追加しています。

[50a534a152] Nobuyoshi Nakada 2021-05-21 06:35:30 UTC

一行メソッド定義の文法を拡張ライブラリ ripper の Ripper.sexp で処理すると通常のメソッド定義の時とちがって bodystmt ノードが生成されてないというのを修正? しています。 [ruby-core:103890] [Bug #17869]