Я переношу проект с cmake на bazel. У меня есть папка, содержащая код Python и genrules
. У меня был тестовый скрипт, рекурсивно запускавший все тесты python в этой папке. Так что в основном мне нужны все файлы py в этой папке как data
для тестового сценария. Но, учитывая некоторые общие правила, которые мне нужно запустить, есть несколько файлов BUILD, так что glob(["**/*.py"])
не может пройти.
Например, у нас есть папка python
, содержащая следующие файлы.
python/BUILD
python/test_a.py
python/folder_a/BUILD
в этом есть правило.python/folder_a/folder_b/BUILD
у этого тоже есть genrule.python/folder_a/folder_b/folder_c/test_b.py
Я хочу запустить тестовый сценарий под python/
, он будет запускать все test_*.py
рекурсивно. Теперь мы хотим обернуть его как sh_test
в bazel. Поэтому нам нужно указать все test_*.py
в поле data
. Но нет простого способа сделать это, поскольку glob()
не может пройти через python/folder_a/BUILD
и python/folder_a/folder_b/BUILD
.
Будет очень удобно, если я смогу запустить этот скрипт в дереве исходных текстов. Но похоже, что Базель этого не предусмотрел. Добавление local = 1
в sh_test
только делает дерево исполняемых файлов доступным для записи.
Я знаю, что это не лучший способ использовать bazel для тестирования, но иногда это слишком большая работа для переноса всего одновременно.