diff options
author | Klaus Aehlig <aehlig@google.com> | 2016-04-15 11:29:05 +0000 |
---|---|---|
committer | Dmitry Lomov <dslomov@google.com> | 2016-04-15 14:08:13 +0000 |
commit | ed453e05105e71f94498c915f31666dd8a473d27 (patch) | |
tree | 7935f4b63d2216d1ecbf035bb73c6a8f9bf4d702 /src/test/java/com/google/devtools/build/lib | |
parent | a4c1a56e1eae3d3a2d8e82c0dde8a368fcaccdb6 (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')
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()); } } |