空配列に対する `to_sentence` のテストを追加
ActionView の to_sentence が空配列でも安全に HTML エスケープ済み空文字列を返すことを保証するテストが追加されました。これにより、未テストだったエッジケースの回帰防止が可能になります。
背景
to_sentence は配列要素を自然言語風に結合し、返却値が html_safe であることを前提に実装されています。既存のテストは 1 要素、2 要素、複数要素のケースを網羅していましたが、空配列に対する振る舞いは検証されていませんでした。空配列が渡された場合に nil や例外が発生すると、ビューの安全性が損なわれるリスクがあります。今回の PR はその盲点を埋めることを目的としています。
技術的な変更
テストファイル actionview/test/template/output_safety_helper_test.rb に以下のメソッドが追加されました。
test "to_sentence handles an empty array" do
actual = to_sentence([])
assert_equal "", actual
assert_predicate actual, :html_safe?
end
このテストは to_sentence([]) が空文字列 "" を返し、かつその文字列が html_safe? であることを検証します。assert_equal で内容を、assert_predicate で HTML 安全性をそれぞれ確認しています。テストの追加はコード本体に変更を加えないため、既存の機能に影響を与えることはありません。
設計判断
テストだけを追加するという選択は、実装コードの変更を伴わずに仕様の安全性を保証 する典型的な手法です。Rails のコアテストは仕様の正確性と回帰防止を重視する方針に沿っており、今回の追加はその方針を強化します。空配列というエッジケースを明示的にテストすることで、将来的な内部実装変更が意図しない振る舞いを導入しないことを保証します。
まとめ
この PR は to_sentence が空配列でも HTML 安全な空文字列 を返すことをテストで明示し、未検証だったエッジケースをカバーしました。コードベースへの実装変更は伴わないためリスクは低く、テストスイートの堅牢性が向上します。