Improve detail of TargetPatternSupport failures
Some post-review comments/observations.
RELNOTES: None
PiperOrigin-RevId: 298964639
diff --git a/src/main/java/com/google/devtools/build/lib/runtime/commands/TargetPatternsHelper.java b/src/main/java/com/google/devtools/build/lib/runtime/commands/TargetPatternsHelper.java
index 56781e5..ad64af3 100644
--- a/src/main/java/com/google/devtools/build/lib/runtime/commands/TargetPatternsHelper.java
+++ b/src/main/java/com/google/devtools/build/lib/runtime/commands/TargetPatternsHelper.java
@@ -18,7 +18,6 @@
import com.google.devtools.build.lib.buildtool.BuildRequestOptions;
import com.google.devtools.build.lib.profiler.Profiler;
import com.google.devtools.build.lib.profiler.SilentCloseable;
-import com.google.devtools.build.lib.runtime.BlazeCommand;
import com.google.devtools.build.lib.runtime.CommandEnvironment;
import com.google.devtools.build.lib.vfs.FileSystemUtils;
import com.google.devtools.build.lib.vfs.Path;
@@ -27,9 +26,7 @@
import java.nio.charset.StandardCharsets;
import java.util.List;
-/**
- * Provides support for implementations for {@link BlazeCommand} to read target patterns from file.
- */
+/** Provides support for reading target patterns from a file or the command-line. */
final class TargetPatternsHelper {
private TargetPatternsHelper() {}
@@ -55,7 +52,7 @@
Lists.newArrayList(FileSystemUtils.readLines(residuePath, StandardCharsets.UTF_8));
} catch (IOException e) {
throw new TargetPatternsHelperException(
- "I/O error reading from " + residuePath.getPathString());
+ "I/O error reading from " + residuePath.getPathString() + ": " + e.getMessage());
}
} else {
try (SilentCloseable closeable =
diff --git a/src/test/java/com/google/devtools/build/lib/runtime/commands/TargetPatternsHelperTest.java b/src/test/java/com/google/devtools/build/lib/runtime/commands/TargetPatternsHelperTest.java
index 2c9680a..6a780cb 100644
--- a/src/test/java/com/google/devtools/build/lib/runtime/commands/TargetPatternsHelperTest.java
+++ b/src/test/java/com/google/devtools/build/lib/runtime/commands/TargetPatternsHelperTest.java
@@ -92,15 +92,26 @@
options.parse("--target_pattern_file=patterns.txt");
options.setResidue(ImmutableList.of("//some:pattern"));
- assertThrows(
- TargetPatternsHelperException.class, () -> TargetPatternsHelper.readFrom(env, options));
+ TargetPatternsHelperException expected =
+ assertThrows(
+ TargetPatternsHelperException.class, () -> TargetPatternsHelper.readFrom(env, options));
+
+ assertThat(expected)
+ .hasMessageThat()
+ .isEqualTo(
+ "Command-line target pattern and --target_pattern_file cannot both be specified");
}
@Test
public void testSpecifyNonExistingFileThrows() throws OptionsParsingException {
options.parse("--target_pattern_file=patterns.txt");
- assertThrows(
- TargetPatternsHelperException.class, () -> TargetPatternsHelper.readFrom(env, options));
+ TargetPatternsHelperException expected =
+ assertThrows(
+ TargetPatternsHelperException.class, () -> TargetPatternsHelper.readFrom(env, options));
+
+ assertThat(expected)
+ .hasMessageThat()
+ .matches("I/O error reading from .*patterns.txt.*\\(No such file or directory\\)");
}
}