Create the temporary _coverage dir under bazel-out/.../testlogs.
During test execution, it's normally expected that created files be under
bazel-out. Creating files outside of this directory can have implications
sandboxing and filesystem abstractions.
PiperOrigin-RevId: 453677860
Change-Id: I920951326c05510d449cd147b7b27e2d223e98a2
diff --git a/src/main/java/com/google/devtools/build/lib/analysis/test/TestRunnerAction.java b/src/main/java/com/google/devtools/build/lib/analysis/test/TestRunnerAction.java
index 36e5087..31a6744 100644
--- a/src/main/java/com/google/devtools/build/lib/analysis/test/TestRunnerAction.java
+++ b/src/main/java/com/google/devtools/build/lib/analysis/test/TestRunnerAction.java
@@ -878,14 +878,16 @@
* or remote execution.
*
* <p>Otherwise, the directory name for the given test runner action is constructed as: {@code
- * _coverage/target_path/test_log_name} where {@code test_log_name} is usually a target name but
- * potentially can include extra suffix, such as a shard number (if test execution was sharded).
+ * [blaze-out/.../testlogs/]_coverage/target_path/test_log_name} where {@code test_log_name} is
+ * usually a target name but potentially can include extra suffix, such as a shard number (if test
+ * execution was sharded).
*/
public PathFragment getCoverageDirectory() {
if (coverageDirectory != null) {
return coverageDirectory.getExecPath();
}
- return COVERAGE_TMP_ROOT.getRelative(
+ PathFragment coverageRoot = getTestLog().getRoot().getExecPath().getRelative(COVERAGE_TMP_ROOT);
+ return coverageRoot.getRelative(
FileSystemUtils.removeExtension(getTestLog().getRootRelativePath()));
}