18 тысяч тестов нашли то, что пропустили 185 обычных
При переносе robfig/cron с Go на Rust код компилировался, а все 185 модульных тестов проходили. Затем одинаковые расписания прогнали через обе реализации и сравнили результаты в 18 тысячах точек. Так вскрылась разница при переводе часов: несуществующее 02:30 Go переносил на 03:30, а библиотека chrono-tz сообщала, что такого локального времени нет.
В Rust пропущенный час стали сдвигать вперёд, после чего сравнительные тесты не нашли ни одного расхождения. Код проверки и история переноса показывают полезный подход: совместимость порта стоит доказывать одинаковым поведением на сложных входных данных, а не успешной сборкой.
Post #14881
1.64K

- 🍾 2
- ❤ 1
- 👍 1
- 🥰 1
- 🎉 1
- 🏆 1