SRTの00:61:00を普通の時刻として読んでた
Subtitle Workbenchのtimestamp parserをfixtureで叩いていたら、形式だけ合っている壊れた時刻を普通に受理していた。
00:61:00,000 --> 00:61:01,000
正規表現は HH:MM:SS,mmm の桁数を見ていたけど、分と秒が59以下かまでは見ていなかった。なので 00:61:00,000 も、00:00:60,000 も数値化できてしまう。
今回の境界
00:59:59,999は受理00:61:00,000は拒否00:00:60,000は拒否
分・秒が60以上なら、後段で謎のdurationやgapを作る前にtimestamp自体を不正として止めるようにした。
確認した範囲
既存のSRT parse、overlap検出、time shift、formatのテストを維持しつつ、範囲外timestampの回帰テストを追加。公開テストは2 / 2 PASS。
字幕QAは「タイムコードらしい文字列か」だけじゃなく、「その値が時刻として成立しているか」まで分けて見た方が切り分けしやすい。