Поиск файлов в модульных тестах Bazel как внешняя зависимость - PullRequest
0 голосов
/ 13 июня 2018

У меня есть проект bazel, назовите его foo, с Catch C ++ модульными тестами, которые читают файлы по относительному пути.

Модульные тесты работают нормально в проекте foo.

Я использую foo в качестве внешней зависимости для другого проекта, назовите его bar.Я хочу, чтобы модульные тесты работали в баре, но в баре они не могут найти файлы.

Чего я не понимаю, так это как найти файлы независимо от проекта.В проекте foo файлы помещаются в:

~/.cache/<blah>/<blah>/<testname.runfiles>/__main__/source/

Но в панели проекта файлы помещаются в

  ~/.cache/<blah>/<blah>/<testname.runfiles>/__main__/external/bars_archive_name/source

Переменная среды TEST_SRCDIR, предоставляемая bazel, указывает на каталог,но это не помогает из-за двух разных структур каталогов.

Модульный тест не может знать имя архива бара (потому что это указано в файле WORKSPACE foo), поэтому он не может найти файлы.Модульный тест также не знает, должен ли он добавлять внешние или нет.

Кажется, что это должно быть что-то простое, поэтому я надеюсь, что мне не хватает чего-то очевидного.

1 Ответ

0 голосов
/ 13 июня 2018

Как зависит ваш юнит-тест от файлов панели проекта?Требует ли модульный тест, чтобы файлы присутствовали по относительному пути?

(Кроме того, на каком языке проводятся ваши тесты? Чем конкретнее вы можете быть о настройке своего проекта, тем лучше я могу помочь :))

Рассматривали ли вы передачу местоположения тестовых зависимостей с помощью флагов / аргументов в ваш тест?Если это возможно, Bazel может помочь разрешить эти пути как абсолютные, если вы используете подстановку $ (location) .

Например, ваша цель теста может выглядеть следующим образом:

my_unit_test(
  name = "test",
  srcs = ["mysrc.file"],
  deps = ["@bar//barproj/other.file"],
  args = [
    "$(location @bar//barproj/other.file)",
  ],
)

Пожалуйста, дайте мне знать, если этого недостаточно!

...