diff options
author | 2016-06-02 16:04:26 +0000 | |
---|---|---|
committer | 2016-06-03 12:45:21 +0000 | |
commit | 07122cf2f623cf50f9fe7ecf7171d6efbc23bed2 (patch) | |
tree | d38ab8d8287bf8a49367b299cba8eec44a79c081 /src | |
parent | c728a631ac6ad87599270bf93a81c8d8a8c23437 (diff) |
experimental UI: when showing the last test, color-code its state
The experimental UI also keeps track, in the progress bar, of the last test
that completed. When using curses, use colors to indicate whether the test
passed or not.
--
Change-Id: Iaa01a773c3bbf534692ed21dd420596cb63e2585
Reviewed-on: https://bazel-review.googlesource.com/#/c/3752
MOS_MIGRATED_REVID=123871492
Diffstat (limited to 'src')
-rw-r--r-- | src/main/java/com/google/devtools/build/lib/runtime/ExperimentalStateTracker.java | 13 | ||||
-rw-r--r-- | src/test/java/com/google/devtools/build/lib/runtime/ExperimentalStateTrackerTest.java | 38 |
2 files changed, 43 insertions, 8 deletions
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 44e38f08b4..eee5e0fd37 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 @@ -410,10 +410,15 @@ class ExperimentalStateTracker { final String prefix = "; last test: "; if (!shortVersion && mostRecentTest != null) { if (terminalWriter != null) { - terminalWriter - .normal() - .append(prefix + shortenedLabelString( - mostRecentTest.getTarget().getLabel(), width - prefix.length())); + terminalWriter.normal().append(prefix); + if (mostRecentTest.getStatus() == BlazeTestStatus.PASSED) { + terminalWriter.okStatus(); + } else { + terminalWriter.failStatus(); + } + terminalWriter.append( + shortenedLabelString(mostRecentTest.getTarget().getLabel(), width - prefix.length())); + terminalWriter.normal(); } return true; } else { diff --git a/src/test/java/com/google/devtools/build/lib/runtime/ExperimentalStateTrackerTest.java b/src/test/java/com/google/devtools/build/lib/runtime/ExperimentalStateTrackerTest.java index ae6ec139cf..1da196b1d3 100644 --- a/src/test/java/com/google/devtools/build/lib/runtime/ExperimentalStateTrackerTest.java +++ b/src/test/java/com/google/devtools/build/lib/runtime/ExperimentalStateTrackerTest.java @@ -287,7 +287,7 @@ public class ExperimentalStateTrackerTest extends FoundationTestCase { @Test public void testPassedVisible() throws Exception { - // The last test that passed should still be visible in the long status bar. + // The last test should still be visible in the long status bar, and colored as ok if it passed. ManualClock clock = new ManualClock(); ExperimentalStateTracker stateTracker = new ExperimentalStateTracker(clock); TestFilteringCompleteEvent filteringComplete = Mockito.mock(TestFilteringCompleteEvent.class); @@ -303,13 +303,43 @@ public class ExperimentalStateTrackerTest extends FoundationTestCase { stateTracker.testFilteringComplete(filteringComplete); stateTracker.testSummary(testSummary); - LoggingTerminalWriter terminalWriter = new LoggingTerminalWriter(/*discardHighlight=*/ true); + LoggingTerminalWriter terminalWriter = new LoggingTerminalWriter(); + stateTracker.writeProgressBar(terminalWriter); + String output = terminalWriter.getTranscript(); + + String expected = LoggingTerminalWriter.OK + labelA; + assertTrue( + "Sequence '" + expected + "' should be present in colored progress bar: " + output, + output.contains(expected)); + } + + @Test + public void testFailedVisible() throws Exception { + // The last test should still be visible in the long status bar, and colored as fail if it + // did not pass. + ManualClock clock = new ManualClock(); + ExperimentalStateTracker stateTracker = new ExperimentalStateTracker(clock); + TestFilteringCompleteEvent filteringComplete = Mockito.mock(TestFilteringCompleteEvent.class); + Label labelA = Label.parseAbsolute("//foo/bar:baz"); + ConfiguredTarget targetA = Mockito.mock(ConfiguredTarget.class); + when(targetA.getLabel()).thenReturn(labelA); + ConfiguredTarget targetB = Mockito.mock(ConfiguredTarget.class); + when(filteringComplete.getTestTargets()).thenReturn(ImmutableSet.of(targetA, targetB)); + TestSummary testSummary = Mockito.mock(TestSummary.class); + when(testSummary.getStatus()).thenReturn(BlazeTestStatus.FAILED); + when(testSummary.getTarget()).thenReturn(targetA); + + stateTracker.testFilteringComplete(filteringComplete); + stateTracker.testSummary(testSummary); + + LoggingTerminalWriter terminalWriter = new LoggingTerminalWriter(); stateTracker.writeProgressBar(terminalWriter); String output = terminalWriter.getTranscript(); + String expected = LoggingTerminalWriter.FAIL + labelA; assertTrue( - "Label " + labelA.toString() + " should be present in progress bar: " + output, - output.contains(labelA.toString())); + "Sequence '" + expected + "' should be present in colored progress bar: " + output, + output.contains(expected)); } @Test |