aboutsummaryrefslogtreecommitdiffhomepage
path: root/src/main
diff options
context:
space:
mode:
Diffstat (limited to 'src/main')
-rw-r--r--src/main/java/com/google/devtools/build/lib/runtime/ExperimentalEventHandler.java13
-rw-r--r--src/main/java/com/google/devtools/build/lib/runtime/ExperimentalStateTracker.java26
2 files changed, 39 insertions, 0 deletions
diff --git a/src/main/java/com/google/devtools/build/lib/runtime/ExperimentalEventHandler.java b/src/main/java/com/google/devtools/build/lib/runtime/ExperimentalEventHandler.java
index d092d68c7b..f158adcc84 100644
--- a/src/main/java/com/google/devtools/build/lib/runtime/ExperimentalEventHandler.java
+++ b/src/main/java/com/google/devtools/build/lib/runtime/ExperimentalEventHandler.java
@@ -21,6 +21,7 @@ import com.google.devtools.build.lib.analysis.NoBuildEvent;
import com.google.devtools.build.lib.buildtool.buildevent.BuildCompleteEvent;
import com.google.devtools.build.lib.buildtool.buildevent.BuildStartingEvent;
import com.google.devtools.build.lib.buildtool.buildevent.ExecutionProgressReceiverAvailableEvent;
+import com.google.devtools.build.lib.buildtool.buildevent.TestFilteringCompleteEvent;
import com.google.devtools.build.lib.events.Event;
import com.google.devtools.build.lib.events.EventKind;
import com.google.devtools.build.lib.pkgcache.LoadingPhaseCompleteEvent;
@@ -227,6 +228,18 @@ public class ExperimentalEventHandler extends BlazeCommandEventHandler {
refresh();
}
+ @Subscribe
+ public void testFilteringComplete(TestFilteringCompleteEvent event) {
+ stateTracker.testFilteringComplete(event);
+ refresh();
+ }
+
+ @Subscribe
+ public void testSummary(TestSummary event) {
+ stateTracker.testSummary(event);
+ refresh();
+ }
+
private void refresh() {
progressBarNeedsRefresh = true;
doRefresh();
diff --git a/src/main/java/com/google/devtools/build/lib/runtime/ExperimentalStateTracker.java b/src/main/java/com/google/devtools/build/lib/runtime/ExperimentalStateTracker.java
index ef0afe2f7b..3085456ebf 100644
--- a/src/main/java/com/google/devtools/build/lib/runtime/ExperimentalStateTracker.java
+++ b/src/main/java/com/google/devtools/build/lib/runtime/ExperimentalStateTracker.java
@@ -21,11 +21,13 @@ import com.google.devtools.build.lib.buildtool.ExecutionProgressReceiver;
import com.google.devtools.build.lib.buildtool.buildevent.BuildCompleteEvent;
import com.google.devtools.build.lib.buildtool.buildevent.BuildStartingEvent;
import com.google.devtools.build.lib.buildtool.buildevent.ExecutionProgressReceiverAvailableEvent;
+import com.google.devtools.build.lib.buildtool.buildevent.TestFilteringCompleteEvent;
import com.google.devtools.build.lib.pkgcache.LoadingPhaseCompleteEvent;
import com.google.devtools.build.lib.skyframe.LoadingPhaseStartedEvent;
import com.google.devtools.build.lib.skyframe.LoadingProgressReceiver;
import com.google.devtools.build.lib.util.Clock;
import com.google.devtools.build.lib.util.io.AnsiTerminalWriter;
+import com.google.devtools.build.lib.view.test.TestStatus.BlazeTestStatus;
import java.io.IOException;
import java.util.ArrayDeque;
@@ -53,6 +55,9 @@ class ExperimentalStateTracker {
private final Map<String, Long> actionNanoStartTimes;
private int actionsCompleted;
+ private int totalTests;
+ private int completedTests;
+ private int failedTests;
private boolean ok;
private ExecutionProgressReceiver executionProgressReceiver;
@@ -156,6 +161,20 @@ class ExperimentalStateTracker {
}
}
+ public void testFilteringComplete(TestFilteringCompleteEvent event) {
+ if (event.getTestTargets() != null) {
+ totalTests = event.getTestTargets().size();
+ }
+ }
+
+ public synchronized void testSummary(TestSummary summary) {
+ completedTests++;
+ if (summary.getStatus() != BlazeTestStatus.PASSED) {
+ failedTests++;
+ }
+ }
+
+
/***
* Predicate indicating whether the contents of the progress bar can change, if the
* only thing that happens is that time passes; this is the case, e.g., if the progress
@@ -201,6 +220,13 @@ class ExperimentalStateTracker {
} else {
terminalWriter.okStatus().append("Building:");
}
+ if (completedTests > 0) {
+ terminalWriter.normal().append(" " + completedTests + " / " + totalTests + " tests");
+ if (failedTests > 0) {
+ terminalWriter.append(", ").failStatus().append("" + failedTests + " failed").normal();
+ }
+ terminalWriter.append(";");
+ }
if (runningActions.size() == 0) {
terminalWriter.normal().append(" no actions running");
} else if (runningActions.size() == 1) {