The following text is a partial translation of the original English article, performed by ChatGPT (gpt-3.5-turbo) and this Jekyll plugin:
Когда вы находите ошибку в используемой вами открытой библиотеке, что вы делаете? Вы отправляете проблему в GitHub issue (или в любую другую систему отслеживания задач), где описываете проблему наилучшим образом, предпочтительно предоставляя пример рабочего кода, который автор библиотеки может запустить локально для воспроизведения ошибки. Если вы не предоставите исполняемый фрагмент кода, скорее всего, вас попросят сделать это, если только ошибка не тривиальна. Я предлагаю упростить процесс и дать им то, что они хотят, прямо в pull request: отправьте им ошибку в виде отключенного модульного теста.
Предположим, есть библиотека на языке Rust, которая предоставляет функцию fibo()
, которая вычисляет число Фибоначчи, которую можно использовать следующим образом:
Вы запускаете его, и он выводит 17711
, что ошибочно является 22-м числом Фибоначчи, а не 23-м. Это определенно ошибка. Вы отправляете запрос, указывая что-то вроде этого:
Они ответят “Можете это подтвердить, пожалуйста? Покажите нам код!” и, вероятно, вы добавите этот код к тикету.
Затем, если они дисциплинированные программисты, будет создан новый модульный тест и функция fibo()
будет исправлена. Более того, если они очень дисциплинированные программисты, они представят тест в отдельном запросе на объединение, отключив его. Затем, во втором запросе на объединение, они внесут исправление.
Почему бы вам не помочь им и не пропустить этап представления задачи? Просто создайте первый запрос на объединение с отключенным тестом и добавьте к нему “головоломку”:
Такой PR выполняет функцию и отчета об ошибке (это то, во что текст головоломки будет превращен после объединения PR) и теста, который воспроизводит проблему. Команда по поддержке репозитория будет очень благодарна за такой PR. Такой PR позволяет сэкономить время, которое они потратили бы на создание юнит-теста. Кроме того, он позволяет сэкономить ваше время на создание отчета об ошибке, так как он будет создан автоматически с помощью инструмента для обнаружения головоломок.
Кстати, этот блог-пост был вдохновлен этим pull request в библиотеке jcabi/jcabi-xml, где был добавлен отключенный юнит-тест в кодовую базу специально для воспроизведения ошибки. В дополнение к тесту была добавлена головоломка, которая привела к новому тикету, новому pull request и, наконец, новому релизу библиотеки.
Translated by ChatGPT gpt-3.5-turbo/42 on 2023-12-27 at 10:43