Quero passar uma pasta como dependência para um py_test no Bazel. Ela contém nomes de arquivos com o caractere especial "=", como "equal=.txt". Recebo uma mensagem no terminal informando que o arquivo não pôde ser encontrado por "zipper.exe". Aqui está um exemplo simples.
Arquivo BUID:
py_test(
name = "bazel_char_test",
srcs = ["bazel_char_test.py"],
data = ["equal.txt"]+["equal = .txt"],
)
Mensagem de erro:
ERRO: C:/path/BUILD:31:8: Falha na construção do Python zip: //project_path:bazel_char_test: (Saída -1): zipper.exe falhou: erro ao executar o comando PythonZipper (do destino //project_path:bazel_char_test) external\bazel_tools\tools\zip\zipper\zipper.exe cC bazel-out/x64_windows-fastbuild/bin/project_path/bazel_char_test.zip ... (1 argumento restante ignorado) O arquivo .txt=project_path/equal = .txt parece não existir. Falha na construção do destino //project_path:bazel_char_test
Verifiquei e o arquivo existe. Se eu mudar o caractere de '=' para '+', o arquivo pode ser encontrado e o teste é iniciado.
Portanto, a falha ocorre durante a execução do comando "zipper.exe / PythonZipper". Supondo que eu iguale o nome do arquivo com o nome do destino e o nome do pacote, isso deve estar de acordo com a documentação do BAZEL , que deve tratar um nome de arquivo com um sinal de igual. "Nomes de destino devem ser compostos inteiramente de caracteres extraídos do conjunto a–z, A–Z, 0–9 e os símbolos de pontuação !%-@^_"#$&'() -+,;<=>?[]{|}~/..*". Parece que a própria existência do sinal = leva a um erro. Não importa se ele tem espaços antes ou depois.
Alguém sabe o que acontece aqui/o que estou fazendo errado? Estou usando o Bazel 7.5.0. Claro que uma solução alternativa seria alterar os nomes dos arquivos (um sinal de igual como nome do arquivo não é a melhor opção, na minha opinião), mas ficaria feliz se eles pudessem permanecer os mesmos.
O problema provavelmente não é o objeto,
=
mas sim os espaços ao redor dele. Há um antigo relatório de bug do Bazel sobre esse problema .