[破壊的変更] 明治時代の開始日が変更になって単体テストが失敗した件
BRANK

「お前は何を言っているんだ?」と思うかもしれませんが、本当なのだから仕方ない!動いていたはずの CI の単体テストが突然コケるという事態に遭遇してビックリ。「何もしてないのに壊れた」。まじで。何が起きたかありのままのコードを載せるわけにはいかないのでポイントを絞って記載します。ざっくり以下のような感じです。サンプルコードは C# / .NET です。和暦への変換// 和暦のカルチャ情報を作る var culture = new CultureInfo("ja-jp"); culture.DateTimeFormat.Calendar = new JapaneseCalendar(); // 明治時代の開始日を文字列に変換 var date = new DateOnly(1868, 9, 8); // 新時代の幕開けじゃー var text = date.ToString("ggy年M月d日", culture); // 一致しているかを確認 Assert.Equals(text, "明治元年9月8日"); これは ubuntu-24.04 でちゃんとテストを pass します。何も問題ない。...が、CI で ubuntu-latest を指定していたために、ある日突然 (内部的に) ubuntu-26.04 に切り替わりました。ちょうど GitHub Actions でも最近切り替わりましたよね。ではこれによって先のコードはどうなるかというと、date.ToString("ggy年M月d日", culture) の部…

zenn.dev
Related Topics: Software testing