トップ «前の日記(2022/09/28 (水) ) 最新 次の日記(2022/09/30 (金) )» 編集 RSS feed

HsbtDiary


2022/09/29 (木) [長年日記]

ruby/spec のあれこれを触っていた

ruby/spec という CRuby, JRuby, TruffleRuby で共通で動かしているテストスイートがあり、それを CRuby の安定バージョンでどう動かしたもんか、というのをメンテナとディスカッションしていた。論点としては

  • CRuby のブランチではブランチのバージョンにしか関心がない。というか、ブランチ以外のバージョン、例えば ruby_3_1 ブランチで Ruby 2.7 で動くかどうか、などはテストしようがない
  • ruby/spec の方では単一のバージョンではなく、複数のバージョンかつ複数の Ruby 実装で動くようにしたい。例えば JRuby 9.3 は今は Ruby 2.6 コンパチ、だったりするので昔のバージョンをテストできないと困る
  • それはそれとして、CRuby には今はそれぞれのブランチに対象のバージョンでは動作する ruby/spec が含まれている

という状況で、安定版ブランチではどのバージョンのどこにある ruby/spec を動かすべきか、という問題がある。今までは、安定版ブランチの中の ruby/spec を積極的に直すということはなされてなかったので、tzdata の変更など、それこそ何もしてないと壊れるテストなどに追従するために ruby/spec から最新版を持ってきて上書きして実行ということをしていたけど、それはそれで ruby/spec の方だと動かないテストが出てきた、というのが今日新たに発生した事象。

結論としては、やはりブランチごとに同梱されている ruby/spec を用いる、壊れたら ruby/spec なり何かを参照するなどして直す、upstream で直ってるならバックポートを行う、ということになったので、それに伴う変更をあちこちでしていた。

このての複数の関心ごとがあるプロダクトを組み合わせ何かをする、というのは本当に大変。

おまけ: tzdata の変更で壊れたテストをコメントアウトから再度有効にする変更も出てたので Ruby 2.7-3.1 にバックポート PR を作っていた

https://github.com/ruby/ruby/pull/6468

tzdata はほんとになー... TZ 周りのテストをある程度はやる以上はしょうがないけど。

rubyci で動かしている何かを軽くメンテ

ruby/spec をいじるついでに色々気になったことがあったので直していた。

https://rubyci.org/ の master は割と監視してるけど、Ruby 2.7-3.1 の方は赤かったりするのが多いのでもうちょい頑張りたい...。