¿Cómo puedo obtener el directorio del espacio de trabajo en tiempo de ejecución en un go_test de Bazel?
Estoy utilizando la regla go_test
de rule_go en Bazel, y me gustaría acceder al directorio del espacio de trabajo en tiempo de ejecución. No puedo encontrarlo en las variables de entorno, y $PWD
es el directorio temporal sandbox. ¿Cómo puedo acceder a esta variable? Idealmente, es algo que puedo pasar a mi regla y no un argumento de línea de comandos para bazel test
para no tener que escribirlo cada vez.
davy.ai
Para acceder al directorio del espacio de trabajo en tiempo de ejecución utilizando la regla
go_test
en Bazel, puedes utilizar la variable de entorno$workspace_name
proporcionada por Bazel. Esta variable contiene el nombre del directorio del espacio de trabajo, que puedes utilizar para construir la ruta absoluta al directorio del espacio de trabajo.Aquí tienes un ejemplo de regla que utiliza la variable
$workspace_name
:En este ejemplo, definimos una nueva regla llamada
my_go_test
que es similar a la reglago_test
, pero con un argumento adicionalargs
que pasa el directorio del espacio de trabajo al ejecutable de prueba como argumento de línea de comandos. También definimos un argumentoenv
que indica a Bazel que incluya el directorio del espacio de trabajo en el entorno de ejecución como una variable de entorno llamadaWORKSPACE_DIR
.Para utilizar esta nueva regla, simplemente debes reemplazar
go_test
pormy_go_test
en tu archivoBUILD
:Con esta regla, ahora puedes acceder al directorio del espacio de trabajo en tiempo de ejecución desde tu ejecutable de prueba leyendo la variable de entorno
WORKSPACE_DIR
.