Как использовать переменные окружения в bazel / googletest

Поэтому я хочу использовать bazel и каркас googletest для запуска юнит-тестов симуляции. Для этого я хочу иметь sample-inputfiles и sample-outputfiles.
Я хочу получить абсолютный путь к исходному файлу, тестовому файлу или любому файлу в хранилище, чтобы я мог оттуда создать относительный путь к входным файлам.
Например.:

std::string path = __SOME_PATH_IN_REPO__+"/../inputfiles/input.txt";
std::fstream infile(path);

Поэтому после долгих поисков я обнаружил, что вы можете определить константы прямо из файла BUILD для bazel следующим образом:

cc_test(
name = "gtest_capabilities",
srcs = [
"testing/pwdTest.cpp",
],
deps = [
"@gtest//:main",
],
copts = [
"-D __ABSOLUTE_PATH__=$(workspace)",
],
)

Важная строка в коптах, где я использую $(workspace),
Я читаю Вот, что вы можете указать копты (или в качестве альтернативы defines) как это, который работает.
это страница, на которую ссылается первая страница, говорит мне, что я могу использовать переменные окружения следующим образом: $ (FOO)
Это также говорит мне, что я могу бежать bazel info --show_make_env чтобы получить все доступные переменные окружения.

Когда я запускаю его, я получаю большой список переменных окружения, который содержит рабочее пространство, рядом со многими другими.
Теперь возникает проблема:
Но когда я использую $(workspace) переменная, bazel говорит мне, что $ (рабочая область) не определена.
Я также работал бы для меня, если бы я мог использовать переменную $ PWD, но я также не мог заставить это работать.

Я надеюсь, что кто-то может помочь мне.
Привет,
Ромео

Редактировать:
Теперь я использую опцию «data» в файле сборки bazel. Это работает в основном

3

Решение

Тьфу, это ужасный результат. В принципе, --show_make_env объединяет выход bazel info и переменные make, не указывающие, что есть что. Чтобы найти переменные make, вы можете преобразовать выходные данные, чтобы удалить информацию, не связанную с make:

$ bazel info --show_make_env > make-vars
$ bazel info > no-make-vars
$ diff make-vars no-make-vars
1,22d0
< ABI: local
< ABI_GLIBC_VERSION: local
< ANDROID_CPU: armeabi
< AR: /usr/bin/ar
< BINDIR: bazel-out/local-fastbuild/bin
< BINMODE: -dbg
< CC: /usr/bin/gcc
< CC_FLAGS:
< COMPILATION_MODE: fastbuild
< CROSSTOOLTOP: external/local_config_cc
< C_COMPILER: compiler
< GENDIR: bazel-out/local-fastbuild/genfiles
< GLIBC_VERSION: local
< JAVA: external/local_jdk/bin/java
< JAVABASE: external/local_jdk
< JAVA_CPU: k8
< JAVA_TRANSLATIONS: 0
< NM: /usr/bin/nm
< OBJCOPY: /usr/bin/objcopy
< STACK_FRAME_UNLIMITED:
< STRIP: /usr/bin/strip
< TARGET_CPU: k8

Это те переменные, которые доступны.

Можете ли вы найти PWD в вашем тесте, вместо того, чтобы использовать -D жестко закодировать это?

0

Другие решения

Других решений пока нет …