Лучшие практики для внешних тестов при использовании модулей Go - PullRequest
3 голосов
/ 26 февраля 2020

У меня есть репозиторий Go, и в нем есть несколько тестов (в пакете с суффиксом _test ). Эти тесты сравнивают его, среди прочего, с некоторыми сторонними библиотеками. Я не использую эти библиотеки в своем коде, не являющемся эталонным.

Я сейчас переношу репо на go модули. Я не хочу, чтобы эти сторонние библиотеки были в моем go .mod, поскольку моей библиотеке они не нужны для обычного использования, и я не хочу, чтобы мой модуль ie передавался излишне.

Каков рекомендуемый go -модный способ сделать это? Мои идеи:

  • построить тег на бенчмарках
  • бенчмарки для другого модуля репо
  • внутри моего модуля

1 Ответ

0 голосов
/ 16 марта 2020

Если кто-то хочет запустить ваш бенчмарк (например, чтобы проверить, соответствуют ли заявленные результаты его конфигурации машины), он должен знать, с какими версиями зависимостей эти бенчмарки были изначально запущены. Информация, необходимая для воспроизведения результатов ваших тестов и тестов, содержится в вашем файле go.mod.

Но учтите, что «иметь минимальную версию» - это не то же самое, что «импортировать».

Если пользователь собирает ваш пакет, но не собирает и не запускает его тест, или если он собирает какой-то другой пакет в вашем модуле, ему не нужно загружать исходный код для зависимости бенчмарка , даже если эта зависимость включена в ваш файл go.mod.

(А предложение в https://golang.org/issue/36460 удваивает это свойство: если оно реализовано, то Предложение позволит избежать загрузки зависимостей пакетов, которые никогда не импортируются, что может привести к удалению больших кусков графа зависимостей.)

Так что, если вы действительно не хотите, чтобы пользователи создавали зависимости вашего теста, поместите бенчмарк в отдельном пакете от того, который вы ожидаете от пользователей.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...