如何仅使用沙箱运行Bazel测试目标?

时间:2019-01-15 04:35:13

标签: bazel

我想运行一个专门运行的测试目标。但是,根据https://docs.bazel.build/versions/master/be/common-definitions.html#common.tags,如果我使用“ exclusive”标记,则目标将不会与沙箱一起运行。有时,作为运行测试目标的一部分而产生的子进程不会终止。我想确保子进程终止。

1 个答案:

答案 0 :(得分:0)

我的目的是确保Bazel目标完成后,子进程不会继续存在。由于我是在没有Bazel沙箱的情况下运行的,因此我无法利用Bazel的沙箱功能来确保子进程实际上已终止。

幸运的是,我的测试是针对Linux系统的,所以我想使用Linux的进程名称空间功能来确保子进程被终止。在运行Bazel命令之前,我使用了unshare command来设置进程名称空间:

$ bazel shutdown # ensure Bazel not already running
$ unshare --pid --fork --map-root-user bazel test ...

我认为这里的教训是,即使Bazel也使用Linux名称空间来设置Bazel沙箱,Bazel的沙箱功能还是全有或全无(例如,您使用了许多Linux名称空间或没有Linux名称空间)。