aboutsummaryrefslogtreecommitdiffhomepage
path: root/src/test/java/com/google/devtools/build/lib
diff options
context:
space:
mode:
authorGravatar Klaus Aehlig <aehlig@google.com>2016-04-15 11:29:05 +0000
committerGravatar Dmitry Lomov <dslomov@google.com>2016-04-15 14:08:13 +0000
commited453e05105e71f94498c915f31666dd8a473d27 (patch)
tree7935f4b63d2216d1ecbf035bb73c6a8f9bf4d702 /src/test/java/com/google/devtools/build/lib
parenta4c1a56e1eae3d3a2d8e82c0dde8a368fcaccdb6 (diff)
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
Diffstat (limited to 'src/test/java/com/google/devtools/build/lib')
-rw-r--r--src/test/java/com/google/devtools/build/lib/runtime/ExperimentalStateTrackerTest.java80
-rw-r--r--src/test/java/com/google/devtools/build/lib/testutil/LoggingTerminalWriter.java86
-rw-r--r--src/test/java/com/google/devtools/build/lib/util/io/LineWrappingAnsiTerminalWriterTest.java60
3 files changed, 118 insertions, 108 deletions
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 236f469871..874ccc125c 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.analysis.ConfiguredTarget;
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 @@ public class ExperimentalStateTrackerTest extends FoundationTestCase {
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 @@ public class ExperimentalStateTrackerTest extends FoundationTestCase {
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 @@ public class ExperimentalStateTrackerTest extends FoundationTestCase {
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 @@ public class ExperimentalStateTrackerTest extends FoundationTestCase {
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 @@ public class ExperimentalStateTrackerTest extends FoundationTestCase {
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 @@ public class ExperimentalStateTrackerTest extends FoundationTestCase {
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 @@ public class ExperimentalStateTrackerTest extends FoundationTestCase {
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 @@ public class ExperimentalStateTrackerTest extends FoundationTestCase {
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,
diff --git a/src/test/java/com/google/devtools/build/lib/testutil/LoggingTerminalWriter.java b/src/test/java/com/google/devtools/build/lib/testutil/LoggingTerminalWriter.java
new file mode 100644
index 0000000000..386655029a
--- /dev/null
+++ b/src/test/java/com/google/devtools/build/lib/testutil/LoggingTerminalWriter.java
@@ -0,0 +1,86 @@
+// Copyright 2016 The Bazel Authors. All rights reserved.
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+// http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+package com.google.devtools.build.lib.testutil;
+
+import com.google.devtools.build.lib.util.io.AnsiTerminalWriter;
+
+import java.io.IOException;
+
+/**
+ * An {@link AnsiTerminalWriter} that keeps just generates a transcript
+ * of the events it was exposed of.
+ */
+public class LoggingTerminalWriter implements AnsiTerminalWriter {
+ // Strings for recording the non-append calls
+ public static final String NEWLINE = "[NL]";
+ public static final String OK = "[OK]";
+ public static final String FAIL = "[FAIL]";
+ public static final String NORMAL = "[NORMAL]";
+
+ private String transcript;
+ private final boolean discardHighlight;
+
+ public LoggingTerminalWriter(boolean discardHighlight) {
+ this.transcript = "";
+ this.discardHighlight = discardHighlight;
+ }
+
+ public LoggingTerminalWriter() {
+ this(false);
+ }
+
+ @Override
+ public AnsiTerminalWriter append(String text) throws IOException {
+ transcript += text;
+ return this;
+ }
+
+ @Override
+ public AnsiTerminalWriter newline() throws IOException {
+ if (!discardHighlight) {
+ transcript += NEWLINE;
+ } else {
+ transcript += "\n";
+ }
+ return this;
+ }
+
+ @Override
+ public AnsiTerminalWriter okStatus() throws IOException {
+ if (!discardHighlight) {
+ transcript += OK;
+ }
+ return this;
+ }
+
+ @Override
+ public AnsiTerminalWriter failStatus() throws IOException {
+ if (!discardHighlight) {
+ transcript += FAIL;
+ }
+ return this;
+ }
+
+ @Override
+ public AnsiTerminalWriter normal() throws IOException {
+ if (!discardHighlight) {
+ transcript += NORMAL;
+ }
+ return this;
+ }
+
+ public String getTranscript() {
+ return transcript;
+ }
+}
diff --git a/src/test/java/com/google/devtools/build/lib/util/io/LineWrappingAnsiTerminalWriterTest.java b/src/test/java/com/google/devtools/build/lib/util/io/LineWrappingAnsiTerminalWriterTest.java
index 5be5aa5a9f..d32a3f9be9 100644
--- a/src/test/java/com/google/devtools/build/lib/util/io/LineWrappingAnsiTerminalWriterTest.java
+++ b/src/test/java/com/google/devtools/build/lib/util/io/LineWrappingAnsiTerminalWriterTest.java
@@ -15,6 +15,8 @@ package com.google.devtools.build.lib.util.io;
import static org.junit.Assert.assertEquals;
+import com.google.devtools.build.lib.testutil.LoggingTerminalWriter;
+
import org.junit.Test;
import org.junit.runner.RunWith;
import org.junit.runners.JUnit4;
@@ -26,70 +28,30 @@ import java.io.IOException;
*/
@RunWith(JUnit4.class)
public class LineWrappingAnsiTerminalWriterTest {
-
- private class LoggingTerminalWriter implements AnsiTerminalWriter {
- // Strings for recording the non-append calls
- static final String NEWLINE = "[NL]";
- static final String OK = "[OK]";
- static final String FAIL = "[FAIL]";
- static final String NORMAL = "[NORMAL]";
-
- String transcript;
-
- LoggingTerminalWriter() {
- this.transcript = "";
- }
-
- @Override
- public AnsiTerminalWriter append(String text) throws IOException {
- transcript += text;
- return this;
- }
-
- @Override
- public AnsiTerminalWriter newline() throws IOException {
- transcript += NEWLINE;
- return this;
- }
-
- @Override
- public AnsiTerminalWriter okStatus() throws IOException {
- transcript += OK;
- return this;
- }
-
- @Override
- public AnsiTerminalWriter failStatus() throws IOException {
- transcript += FAIL;
- return this;
- }
-
- @Override
- public AnsiTerminalWriter normal() throws IOException {
- transcript += NORMAL;
- return this;
- }
- }
+ static final String NL = LoggingTerminalWriter.NEWLINE;
+ static final String OK = LoggingTerminalWriter.OK;
+ static final String FAIL = LoggingTerminalWriter.FAIL;
+ static final String NORMAL = LoggingTerminalWriter.NORMAL;
@Test
public void testSimpleLineWrapping() throws IOException {
LoggingTerminalWriter terminal = new LoggingTerminalWriter();
(new LineWrappingAnsiTerminalWriter(terminal, 5, '+')).append("abcdefghij");
- assertEquals("abcd+[NL]efgh+[NL]ij", terminal.transcript);
+ assertEquals("abcd+" + NL + "efgh+" + NL + "ij", terminal.getTranscript());
}
@Test
public void testAlwaysWrap() throws IOException {
LoggingTerminalWriter terminal = new LoggingTerminalWriter();
(new LineWrappingAnsiTerminalWriter(terminal, 5, '+')).append("12345").newline();
- assertEquals("1234+[NL]5[NL]", terminal.transcript);
+ assertEquals("1234+" + NL + "5" + NL, terminal.getTranscript());
}
@Test
public void testNewlineTranslated() throws IOException {
LoggingTerminalWriter terminal = new LoggingTerminalWriter();
(new LineWrappingAnsiTerminalWriter(terminal, 80, '+')).append("foo\nbar\n");
- assertEquals("foo[NL]bar[NL]", terminal.transcript);
+ assertEquals("foo" + NL + "bar" + NL, terminal.getTranscript());
}
@Test
@@ -102,7 +64,7 @@ public class LineWrappingAnsiTerminalWriterTest {
.newline()
.append("ABC\nABC")
.newline();
- assertEquals("123[NL]abc[NL]ABC[NL]ABC[NL]", terminal.transcript);
+ assertEquals("123" + NL + "abc" + NL + "ABC" + NL + "ABC" + NL, terminal.getTranscript());
}
@Test
@@ -115,6 +77,6 @@ public class LineWrappingAnsiTerminalWriterTest {
.append("fail")
.normal()
.append("normal");
- assertEquals("[OK]ok[FAIL]fail[NORMAL]normal", terminal.transcript);
+ assertEquals(OK + "ok" + FAIL + "fail" + NORMAL + "normal", terminal.getTranscript());
}
}