Запуск `go test` в родительском каталоге нескольких go модулей - PullRequest
0 голосов
/ 11 апреля 2020

Посмотрите на эту структуру каталогов:

/root
    /one
        go.mod
        go.sum
        main.go
        main_test.go
    /two
        go.mod
        go.sum
        main.go
        main_test.go

Допустим, я нахожусь в родительском каталоге root/ и хочу запустить все тесты во всех подкаталогах. Что я делаю? Я попытался go test./... и получил следующую ошибку:

go: warning: "./..." matched no packages
no packages to test

1 Ответ

1 голос
/ 12 апреля 2020

Да, это не будет работать с go test, который рассчитан на работу с одним модулем, корнем которого является текущий каталог или его родительский модуль. Он также не будет работать с вложенными модулями.

Вам понадобится трюк с оболочкой, такой как использование find или что-то эквивалентное для выполнения в каждом модуле (см., Например, комментарий Cerise Limón). Проекты обычно используют сценарий Makefile или test.sh для его запуска.


Один проект большего размера, над которым я работал , имеет список всех своих модулей (https://github.com/google/go-cloud/blob/master/allmodules), а затем несколько сценариев, которые работают в этом списке. Например, тестовый скрипт просто проходит по этому файлу и запускает go test для каждого каталога, наряду с другими вещами.

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

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