Move LoggingTerminalWriter to a public util class

In this way, it can be used for other tests as well. While there, also
unify the two almost identical private LoggingTerminalWriter classes.

--
Change-Id: I9cdf9eb235110a0ad6b9514012a92a923d219b53
Reviewed-on: https://bazel-review.googlesource.com/#/c/3372
MOS_MIGRATED_REVID=119943441
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 236f469..874ccc1 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
@@ -27,8 +27,8 @@
 import com.google.devtools.build.lib.buildtool.buildevent.TestFilteringCompleteEvent;
 import com.google.devtools.build.lib.cmdline.Label;
 import com.google.devtools.build.lib.testutil.FoundationTestCase;
+import com.google.devtools.build.lib.testutil.LoggingTerminalWriter;
 import com.google.devtools.build.lib.testutil.ManualClock;
-import com.google.devtools.build.lib.util.io.AnsiTerminalWriter;
 import com.google.devtools.build.lib.vfs.Path;
 import com.google.devtools.build.lib.vfs.PathFragment;
 import com.google.devtools.build.lib.view.test.TestStatus.BlazeTestStatus;
@@ -57,44 +57,6 @@
     return action;
   }
 
-  private class LoggingTerminalWriter implements AnsiTerminalWriter {
-    private String written;
-
-    LoggingTerminalWriter() {
-      this.written = "";
-    }
-
-    @Override
-    public LoggingTerminalWriter append(String text) throws IOException {
-      written += text;
-      return this;
-    }
-
-    @Override
-    public LoggingTerminalWriter newline() throws IOException {
-      return this;
-    }
-
-    @Override
-    public LoggingTerminalWriter okStatus() throws IOException {
-      return this;
-    }
-
-    @Override
-    public LoggingTerminalWriter failStatus() throws IOException {
-      return this;
-    }
-
-    @Override
-    public LoggingTerminalWriter normal() throws IOException {
-      return this;
-    }
-
-    String getWritten() {
-      return written;
-    }
-  }
-
   @Test
   public void testActionVisible() throws IOException {
     // If there is only one action running, it should be visible
@@ -107,16 +69,16 @@
     ExperimentalStateTracker stateTracker = new ExperimentalStateTracker(clock);
     stateTracker.actionStarted(new ActionStartedEvent(mockAction(message, "bar/foo"), 123456789));
 
-    LoggingTerminalWriter terminalWriter = new LoggingTerminalWriter();
+    LoggingTerminalWriter terminalWriter = new LoggingTerminalWriter(/*discardHighlight=*/ true);
     stateTracker.writeProgressBar(terminalWriter);
-    String output = terminalWriter.getWritten();
+    String output = terminalWriter.getTranscript();
     assertTrue(
         "Action message '" + message + "' should be present in output: " + output,
         output.contains(message));
 
     terminalWriter = new LoggingTerminalWriter();
     stateTracker.writeProgressBar(terminalWriter, /* shortVersion=*/ true);
-    output = terminalWriter.getWritten();
+    output = terminalWriter.getTranscript();
     assertTrue(
         "Action message '" + message + "' should be present in short output: " + output,
         output.contains(message));
@@ -140,9 +102,9 @@
     stateTracker.actionStarted(new ActionStartedEvent(slowAction, 123456999));
     stateTracker.actionCompletion(new ActionCompletionEvent(20, fastAction));
 
-    LoggingTerminalWriter terminalWriter = new LoggingTerminalWriter();
+    LoggingTerminalWriter terminalWriter = new LoggingTerminalWriter(/*discardHighlight=*/ true);
     stateTracker.writeProgressBar(terminalWriter);
-    String output = terminalWriter.getWritten();
+    String output = terminalWriter.getTranscript();
     assertFalse(
         "Completed action '" + messageFast + "' should not be present in output: " + output,
         output.contains(messageFast));
@@ -152,7 +114,7 @@
 
     terminalWriter = new LoggingTerminalWriter();
     stateTracker.writeProgressBar(terminalWriter, /* shortVersion=*/ true);
-    output = terminalWriter.getWritten();
+    output = terminalWriter.getTranscript();
     assertFalse(
         "Completed action '" + messageFast + "' should not be present in short output: " + output,
         output.contains(messageFast));
@@ -179,16 +141,16 @@
               mockAction("Other action " + i, "some/other/actions/number" + i), 123456790 + i));
     }
 
-    LoggingTerminalWriter terminalWriter = new LoggingTerminalWriter();
+    LoggingTerminalWriter terminalWriter = new LoggingTerminalWriter(/*discardHighlight=*/ true);
     stateTracker.writeProgressBar(terminalWriter);
-    String output = terminalWriter.getWritten();
+    String output = terminalWriter.getTranscript();
     assertTrue(
         "Longest running action '" + messageOld + "' should be visible in output: " + output,
         output.contains(messageOld));
 
-    terminalWriter = new LoggingTerminalWriter();
+    terminalWriter = new LoggingTerminalWriter(/*discardHighlight=*/ true);
     stateTracker.writeProgressBar(terminalWriter, /* shortVersion=*/ true);
-    output = terminalWriter.getWritten();
+    output = terminalWriter.getTranscript();
     assertTrue(
         "Longest running action '" + messageOld + "' should be visible in short output: " + output,
         output.contains(messageOld));
@@ -211,17 +173,17 @@
         new ActionStartedEvent(mockAction("Second action", "bar"), clock.nanoTime()));
     clock.advanceMillis(TimeUnit.SECONDS.toMillis(20));
 
-    LoggingTerminalWriter terminalWriter = new LoggingTerminalWriter();
+    LoggingTerminalWriter terminalWriter = new LoggingTerminalWriter(/*discardHighlight=*/ true);
     stateTracker.writeProgressBar(terminalWriter);
-    String output = terminalWriter.getWritten();
+    String output = terminalWriter.getTranscript();
     assertTrue(
         "Runtime of first action should be visible in output: " + output, output.contains("27s"));
     assertTrue(
         "Runtime of second action should be visible in output: " + output, output.contains("20s"));
 
-    terminalWriter = new LoggingTerminalWriter();
+    terminalWriter = new LoggingTerminalWriter(/*discardHighlight=*/ true);
     stateTracker.writeProgressBar(terminalWriter, /* shortVersion=*/ true);
-    output = terminalWriter.getWritten();
+    output = terminalWriter.getTranscript();
     assertTrue(
         "Runtime of first action should be visible in short output: " + output,
         output.contains("27s"));
@@ -269,15 +231,15 @@
     stateTracker.testFilteringComplete(filteringComplete);
     stateTracker.testSummary(testSummary);
 
-    LoggingTerminalWriter terminalWriter = new LoggingTerminalWriter();
+    LoggingTerminalWriter terminalWriter = new LoggingTerminalWriter(/*discardHighlight=*/ true);
     stateTracker.writeProgressBar(terminalWriter);
-    String output = terminalWriter.getWritten();
+    String output = terminalWriter.getTranscript();
     assertTrue(
         "Test count should be visible in output: " + output, output.contains(" 1 / 2 tests"));
 
-    terminalWriter = new LoggingTerminalWriter();
+    terminalWriter = new LoggingTerminalWriter(/*discardHighlight=*/ true);
     stateTracker.writeProgressBar(terminalWriter, /* shortVersion=*/ true);
-    output = terminalWriter.getWritten();
+    output = terminalWriter.getTranscript();
     assertTrue(
         "Test count should be visible in short output: " + output, output.contains(" 1 / 2 tests"));
   }
@@ -300,9 +262,9 @@
     stateTracker.testFilteringComplete(filteringComplete);
     stateTracker.testSummary(testSummary);
 
-    LoggingTerminalWriter terminalWriter = new LoggingTerminalWriter();
+    LoggingTerminalWriter terminalWriter = new LoggingTerminalWriter(/*discardHighlight=*/ true);
     stateTracker.writeProgressBar(terminalWriter);
-    String output = terminalWriter.getWritten();
+    String output = terminalWriter.getTranscript();
 
     assertTrue(
         "Label " + labelA.toString() + " should be present in progress bar: " + output,