ByteStreamBuildEventArtifactUploader: Treat test directory outputs like other directory outputs.
Fixes https://github.com/bazelbuild/bazel/issues/19847.
Closes #19851.
PiperOrigin-RevId: 574399055
Change-Id: I2d4cca1c70636b6f8f025a98ed5f0f19ae29bf47
diff --git a/src/main/java/com/google/devtools/build/lib/remote/ByteStreamBuildEventArtifactUploader.java b/src/main/java/com/google/devtools/build/lib/remote/ByteStreamBuildEventArtifactUploader.java
index ea5e11f..cd8b8b5 100644
--- a/src/main/java/com/google/devtools/build/lib/remote/ByteStreamBuildEventArtifactUploader.java
+++ b/src/main/java/com/google/devtools/build/lib/remote/ByteStreamBuildEventArtifactUploader.java
@@ -199,7 +199,10 @@
DigestUtil digestUtil = new DigestUtil(xattrProvider, path.getFileSystem().getDigestFunction());
if (file.type == LocalFileType.OUTPUT_DIRECTORY
- || (file.type == LocalFileType.OUTPUT && path.isDirectory())) {
+ || ((file.type == LocalFileType.SUCCESSFUL_TEST_OUTPUT
+ || file.type == LocalFileType.FAILED_TEST_OUTPUT
+ || file.type == LocalFileType.OUTPUT)
+ && path.isDirectory())) {
return new PathMetadata(
path,
/* digest= */ null,
diff --git a/src/test/java/com/google/devtools/build/lib/remote/ByteStreamBuildEventArtifactUploaderTest.java b/src/test/java/com/google/devtools/build/lib/remote/ByteStreamBuildEventArtifactUploaderTest.java
index 8e8bbfd..be46f3c 100644
--- a/src/test/java/com/google/devtools/build/lib/remote/ByteStreamBuildEventArtifactUploaderTest.java
+++ b/src/test/java/com/google/devtools/build/lib/remote/ByteStreamBuildEventArtifactUploaderTest.java
@@ -344,11 +344,27 @@
public void testUnknown_notUploadedIfDirectory() throws Exception {
Path dir = fs.getPath("/dir");
dir.createDirectoryAndParents();
- Map<Path, LocalFile> filesToUpload = new HashMap<>();
- filesToUpload.put(
- dir,
- new LocalFile(
- dir, LocalFileType.OUTPUT, /* artifact= */ null, /* artifactMetadata= */ null));
+ var successfulTest = fs.getPath("/test_passed");
+ successfulTest.createDirectory();
+ var failedTest = fs.getPath("/test_failed");
+ failedTest.createDirectory();
+ var filesToUpload =
+ ImmutableMap.of(
+ dir,
+ new LocalFile(
+ dir, LocalFileType.OUTPUT, /* artifact= */ null, /* artifactMetadata= */ null),
+ successfulTest,
+ new LocalFile(
+ successfulTest,
+ LocalFileType.SUCCESSFUL_TEST_OUTPUT,
+ /* artifact= */ null,
+ /* artifactMetadata= */ null),
+ failedTest,
+ new LocalFile(
+ failedTest,
+ LocalFileType.FAILED_TEST_OUTPUT,
+ /* artifact= */ null,
+ /* artifactMetadata= */ null));
RemoteRetrier retrier =
TestUtils.newRemoteRetrier(() -> new FixedBackoff(1, 0), (e) -> true, retryService);
ReferenceCountedChannel refCntChannel = new ReferenceCountedChannel(channelConnectionFactory);
@@ -357,6 +373,9 @@
PathConverter pathConverter = artifactUploader.upload(filesToUpload).get();
assertThat(pathConverter.apply(dir)).isNull();
+ assertThat(pathConverter.apply(successfulTest)).isNull();
+ assertThat(pathConverter.apply(failedTest)).isNull();
+ assertThat(eventHandler.getEvents()).isEmpty();
artifactUploader.release();
}