aboutsummaryrefslogtreecommitdiffhomepage
path: root/src/main/java
diff options
context:
space:
mode:
authorGravatar aehlig <aehlig@google.com>2017-07-04 05:26:56 -0400
committerGravatar John Cater <jcater@google.com>2017-07-05 10:57:48 -0400
commit6c446ac82a23bd803a4881ac84e427325db15e69 (patch)
tree589d654c881c9cdcf7d1831d37dd2fd703345a9c /src/main/java
parentbf4ff7a126337cd1c34dff614355668d73661a19 (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.java23
-rw-r--r--src/main/java/com/google/devtools/build/lib/runtime/TestSummaryPrinter.java18
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");