minitest 6.0.2対応に伴うminitestサーバープラグインの読み込み処理を削除
minitest 6.0.2が--bisectオプションをネイティブサポートしたことで、Rails側で行っていたminitestサーバープラグインの明示的な読み込みが不要になりました。この変更により、テストの実行環境がよりシンプルになり、minitest本体の機能に依存する形に統一されます。
背景
minitest 6.0では、minitest-bisectプラグインが本体に統合されましたが、すべてのプラグインがopt-in方式になったため、--bisectオプションを使用するにはサーバープラグインを明示的に読み込む必要がありました。#56647では、この制約に対処するためactivesupport/lib/active_support/testing/autorun.rbでMinitest.load :serverを呼び出す処理を追加していました。
minitest 6.0.2のリリースにより、この回避策は不要になりました。minitest本体が--bisectオプションを直接サポートするようになったためです。#56882の最小再現環境でも--bisectオプションが正常に動作することが確認されています。
技術的な変更
activesupport/lib/active_support/testing/autorun.rbから、サーバープラグインの読み込み処理が削除されました。
変更前:
Minitest.load :rails if Minitest.respond_to? :load
Minitest.load :server if Minitest.respond_to? :load
Minitest.autorun
変更後:
Minitest.load :rails if Minitest.respond_to? :load
Minitest.autorun
この変更により、Rails固有の:railsプラグインのみを読み込む形になり、minitest本体の機能に依存する標準的な構成に戻りました。--bisectオプションはminitest 6.0.2以降で自動的に利用可能です。
設計判断
回避策を即座に削除する方針が採用されました。
minitest 6.0.2がリリースされた時点で、バージョン固定やフィーチャー検出によるフォールバックを実装することなく、この処理を完全に削除しています。minitest 6.0.2の:serverプラグインの読み込みが不要になったという事実に基づき、シンプルな削除が選択されました。
実際の動作確認も行われており、#56882のCI障害を再現するための最小環境で--bisectオプションが正常に機能することが検証されています。この確認により、回避策なしで本来の機能が利用できることが保証されています。
まとめ
本PRは、minitestの上流の改善に合わせて、Rails側の回避策を削除した変更です。依存ライブラリの機能改善を受けて、一時的な対処コードを速やかに取り除くことで、コードベースの複雑性を低減し、メンテナンス性を向上させています。