![](/img/trans.png)
[英]Why can't Bazel find my test class when running bazel test on a java_test rule?
[英]java.io.tmpdir when running java_test with bazel
我的測試需要編寫一個簡短的臨時文件(必須小於107個字符)。 目前測試正在使用
Files.createTempFile(null,".sock");
在運行時我試圖使用bazel運行java測試時找出java.io.tmp
值。 我有不同的選擇:
$TEST_TMPDIR
(或不設置) "local"=True
(或不使用) 結果如下:
# local=True + TEST_TMPDIR=/btmp:
/btmp/_bazel_ors/719f891d5db9fd5e73ade25b0c847fd1/execroot/__main__/_tmp/8be6e61521c57d3cfc8585efa880e1ac/1638063256753562848.sock
# local=False + TEST_TMPDIR=/btmp:
/btmp/_bazel_ors/719f891d5db9fd5e73ade25b0c847fd1/bazel-sandbox/5561433121200492142/execroot/__main__/_tmp/8be6e61521c57d3cfc8585efa880e1ac/4867903879018296623.sock
# local=True , no TEST_TMPDIR:
/private/var/tmp/_bazel_ors/719f891d5db9fd5e73ade25b0c847fd1/execroot/__main__/_tmp/8be6e61521c57d3cfc8585efa880e1ac/984443110479498941.sock
# local=False , no TEST_TMPDIR:
/private/var/tmp/_bazel_ors/719f891d5db9fd5e73ade25b0c847fd1/bazel-sandbox/6199384508952843116/execroot/__main__/_tmp/8be6e61521c57d3cfc8585efa880e1ac/4588114364301475150.sock
好像我可以得到的最短的臨時前綴是:
/private/var/tmp/_bazel_ors/719f891d5db9fd5e73ade25b0c847fd1/execroot/__main__/_tmp/
長度為85個字符(太長了,無法滿足我的需求)。
如何安全地使用此配置並將其縮短很多?
我的環境是Mac OS X Sierra,我正在運行Bazel 0.5.1
您還可以告訴bazel它應該在哪里存儲其輸出--output_base=/tmp/foo
。
可通過將其添加到測試目標的jvm_flags
中來jvm_flags
:
"jvm_flags" = ["-Djava.io.tmpdir=/tmp"],
但是請注意,這會使測試不那么封閉
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.