From 07122cf2f623cf50f9fe7ecf7171d6efbc23bed2 Mon Sep 17 00:00:00 2001 From: Klaus Aehlig Date: Thu, 2 Jun 2016 16:04:26 +0000 Subject: 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 --- .../lib/runtime/ExperimentalStateTrackerTest.java | 38 +++++++++++++++++++--- 1 file changed, 34 insertions(+), 4 deletions(-) (limited to 'src/test') 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 -- cgit v1.2.3