2015-02-13 1 views
6

Есть ли способ для меня легко запустить тест Go много раз, остановив первый раз, когда он не удается? Я могу, конечно, сделать что-то вроде этого:Golang: Как запустить «go test» повторно без перекомпиляции?

for i in {1..1000}; do go test ./mypkg && done 

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

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

ответ

5

Вы можете передать -c флаг go test, который, за помощью:

Compile тест двоичного файла pkg.test но не запускать его. (Где pkg является последним элементом пути импорта пакета.)

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

+0

Спасибо! Я предпочел бы законсервированную формулу 'xargs' для параллельной работы и получения хорошего результата выхода, но это в значительной степени зависит от меня. – jacobsa

5

Это, вероятно, новая функция - но вы можете использовать -count N, чтобы указать, сколько раз повторять каждый тест. Вероятно, стоит упомянуть, что они будут запускать их с одной компиляцией.

Я должен поблагодарить Флорина Пэцана за то, что вы заметили это в обсуждении Гитуба, которое мы недавно имели.