diff options
Diffstat (limited to 'src/main/java')
-rw-r--r-- | src/main/java/com/google/devtools/build/lib/runtime/commands/QueryCommand.java | 29 |
1 files changed, 15 insertions, 14 deletions
diff --git a/src/main/java/com/google/devtools/build/lib/runtime/commands/QueryCommand.java b/src/main/java/com/google/devtools/build/lib/runtime/commands/QueryCommand.java index c5120cb74b..5062813f4a 100644 --- a/src/main/java/com/google/devtools/build/lib/runtime/commands/QueryCommand.java +++ b/src/main/java/com/google/devtools/build/lib/runtime/commands/QueryCommand.java @@ -24,6 +24,7 @@ import com.google.devtools.build.lib.query2.SkyframeQueryEnvironment; import com.google.devtools.build.lib.query2.engine.BlazeQueryEvalResult; import com.google.devtools.build.lib.query2.engine.QueryEnvironment.QueryFunction; import com.google.devtools.build.lib.query2.engine.QueryEnvironment.Setting; +import com.google.devtools.build.lib.query2.engine.QueryEvalResult; import com.google.devtools.build.lib.query2.engine.QueryException; import com.google.devtools.build.lib.query2.engine.QueryExpression; import com.google.devtools.build.lib.query2.output.OutputFormatter; @@ -40,7 +41,6 @@ import com.google.devtools.common.options.OptionsProvider; import java.io.IOException; import java.io.PrintStream; -import java.nio.channels.ClosedByInterruptException; import java.util.Set; /** @@ -129,21 +129,9 @@ public final class QueryCommand implements BlazeCommand { } // 3. Output results: - OutputFormatter.UnorderedFormatter unorderedFormatter = null; - if (!queryOptions.orderResults && formatter instanceof UnorderedFormatter) { - unorderedFormatter = (UnorderedFormatter) formatter; - } - PrintStream output = new PrintStream(runtime.getReporter().getOutErr().getOutputStream()); try { - if (unorderedFormatter != null) { - unorderedFormatter.outputUnordered(queryOptions, result.getResultSet(), output); - } else { - formatter.output(queryOptions, result.getResultGraph(), output); - } - } catch (ClosedByInterruptException e) { - runtime.getReporter().handle(Event.error("query interrupted")); - return ExitCode.INTERRUPTED; + output(queryOptions, result, formatter, output); } catch (IOException e) { runtime.getReporter().handle(Event.error("I/O error: " + e.getMessage())); return ExitCode.LOCAL_ENVIRONMENTAL_ERROR; @@ -157,6 +145,19 @@ public final class QueryCommand implements BlazeCommand { return result.getSuccess() ? ExitCode.SUCCESS : ExitCode.PARTIAL_ANALYSIS_FAILURE; } + @VisibleForTesting + public static void output(QueryOptions queryOptions, QueryEvalResult<Target> result, + OutputFormatter formatter, PrintStream outputStream) + throws IOException { + if (queryOptions.orderResults || !(formatter instanceof UnorderedFormatter)) { + formatter.output(queryOptions, ((BlazeQueryEvalResult<Target>) result).getResultGraph(), + outputStream); + } else { + ((UnorderedFormatter) formatter).outputUnordered(queryOptions, result.getResultSet(), + outputStream); + } + } + @VisibleForTesting // for com.google.devtools.deps.gquery.test.QueryResultTestUtil public static BlazeQueryEnvironment newQueryEnvironment(BlazeRuntime runtime, boolean keepGoing, int loadingPhaseThreads, Set<Setting> settings) { |