diff options
Diffstat (limited to 'src/main')
-rw-r--r-- | src/main/java/com/google/devtools/build/lib/runtime/ExperimentalEventHandler.java | 13 | ||||
-rw-r--r-- | src/main/java/com/google/devtools/build/lib/runtime/ExperimentalStateTracker.java | 26 |
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) { |