diff options
author | aehlig <aehlig@google.com> | 2017-07-04 05:26:56 -0400 |
---|---|---|
committer | John Cater <jcater@google.com> | 2017-07-05 10:57:48 -0400 |
commit | 6c446ac82a23bd803a4881ac84e427325db15e69 (patch) | |
tree | 589d654c881c9cdcf7d1831d37dd2fd703345a9c /src/main/java | |
parent | bf4ff7a126337cd1c34dff614355668d73661a19 (diff) |
Add configuration to terminal test summary, if needed
When showing the summary of test results on the terminal, for multi-configuration
builds it can happen that the same label occurs twice (as the test was run for
multiple configurations). In this case, also show the configuration (as mnemonics)
for all tests in the summary.
RELNOTES: None
PiperOrigin-RevId: 160875427
Diffstat (limited to 'src/main/java')
-rw-r--r-- | src/main/java/com/google/devtools/build/lib/runtime/TerminalTestResultNotifier.java | 23 | ||||
-rw-r--r-- | src/main/java/com/google/devtools/build/lib/runtime/TestSummaryPrinter.java | 18 |
2 files changed, 38 insertions, 3 deletions
diff --git a/src/main/java/com/google/devtools/build/lib/runtime/TerminalTestResultNotifier.java b/src/main/java/com/google/devtools/build/lib/runtime/TerminalTestResultNotifier.java index 7624c757b6..726ff5096d 100644 --- a/src/main/java/com/google/devtools/build/lib/runtime/TerminalTestResultNotifier.java +++ b/src/main/java/com/google/devtools/build/lib/runtime/TerminalTestResultNotifier.java @@ -13,6 +13,7 @@ // limitations under the License. package com.google.devtools.build.lib.runtime; +import com.google.devtools.build.lib.cmdline.Label; import com.google.devtools.build.lib.exec.ExecutionOptions; import com.google.devtools.build.lib.exec.TestLogHelper; import com.google.devtools.build.lib.exec.TestStrategy.TestOutputFormat; @@ -27,6 +28,7 @@ import com.google.devtools.common.options.OptionsBase; import com.google.devtools.common.options.OptionsProvider; import com.google.devtools.common.options.proto.OptionFilters.OptionEffectTag; import java.util.ArrayList; +import java.util.HashSet; import java.util.List; import java.util.Set; @@ -89,12 +91,27 @@ public class TerminalTestResultNotifier implements TestResultNotifier { } /** + * Decide if two tests with the same label are contained in the set of test summaries + */ + private boolean duplicateLabels(Set<TestSummary> summaries) { + Set<Label> labelsSeen = new HashSet<>(); + for (TestSummary summary : summaries) { + if (labelsSeen.contains(summary.getTarget().getLabel())) { + return true; + } + labelsSeen.add(summary.getTarget().getLabel()); + } + return false; + } + + /** * Prints a test result summary that contains only failed tests. */ private void printDetailedTestResultSummary(Set<TestSummary> summaries) { + boolean withConfig = duplicateLabels(summaries); for (TestSummary summary : summaries) { if (summary.getStatus() != BlazeTestStatus.PASSED) { - TestSummaryPrinter.print(summary, printer, summaryOptions.verboseSummary, true); + TestSummaryPrinter.print(summary, printer, summaryOptions.verboseSummary, true, withConfig); } } } @@ -103,9 +120,11 @@ public class TerminalTestResultNotifier implements TestResultNotifier { * Prints a full test result summary. */ private void printShortSummary(Set<TestSummary> summaries, boolean showPassingTests) { + boolean withConfig = duplicateLabels(summaries); for (TestSummary summary : summaries) { if (summary.getStatus() != BlazeTestStatus.PASSED || showPassingTests) { - TestSummaryPrinter.print(summary, printer, summaryOptions.verboseSummary, false); + TestSummaryPrinter.print(summary, printer, summaryOptions.verboseSummary, false, + withConfig); } } } diff --git a/src/main/java/com/google/devtools/build/lib/runtime/TestSummaryPrinter.java b/src/main/java/com/google/devtools/build/lib/runtime/TestSummaryPrinter.java index 2acea958bf..694eda641f 100644 --- a/src/main/java/com/google/devtools/build/lib/runtime/TestSummaryPrinter.java +++ b/src/main/java/com/google/devtools/build/lib/runtime/TestSummaryPrinter.java @@ -92,6 +92,18 @@ public class TestSummaryPrinter { TestSummary summary, AnsiTerminalPrinter terminalPrinter, boolean verboseSummary, boolean printFailedTestCases) { + print(summary, terminalPrinter, verboseSummary, printFailedTestCases, false); + } + + /** + * Prints summary status for a single test. + * @param terminalPrinter The printer to print to + */ + public static void print( + TestSummary summary, + AnsiTerminalPrinter terminalPrinter, + boolean verboseSummary, boolean printFailedTestCases, + boolean withConfigurationName) { BlazeTestStatus status = summary.getStatus(); // Skip output for tests that failed to build. if (status == BlazeTestStatus.FAILED_TO_BUILD @@ -99,8 +111,12 @@ public class TestSummaryPrinter { return; } String message = getCacheMessage(summary) + statusString(summary.getStatus()); + String targetName = summary.getTarget().getLabel().toString(); + if (withConfigurationName) { + targetName += " (" + summary.getTarget().getConfiguration().getMnemonic() + ")"; + } terminalPrinter.print( - Strings.padEnd(summary.getTarget().getLabel().toString(), 78 - message.length(), ' ') + Strings.padEnd(targetName, 78 - message.length(), ' ') + " " + TestSummary.getStatusMode(summary.getStatus()) + message + Mode.DEFAULT + (verboseSummary ? getAttemptSummary(summary) + getTimeSummary(summary) : "") + "\n"); |