簡體   English   中英

使用bazel運行java_test時的java.io.tmpdir

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM