用bazel运行java_test时的java.io.tmpdir

时间:2017-06-15 15:58:30

标签: java scala continuous-integration 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 char long(对我来说太长了)。

如何安全地使用此配置并缩短它?

注意:

我的环境是 mac osx sierra ,我正在运行bazel 0.5.1

2 个答案:

答案 0 :(得分:1)

你也可以告诉bazel应该在哪里存储它的输出--output_base=/tmp/foo

答案 1 :(得分:0)

通过将其添加到测试目标的jvm_flags来解决:

"jvm_flags" = ["-Djava.io.tmpdir=/tmp"],

但请注意,它会使测试变得不那么密集