Author: bodewig
Date: Tue May 6 19:44:37 2014
New Revision: 1592848
URL: http://svn.apache.org/r1592848
Log:
PR 56470 - merge messages in LogCapturer only when asked to
Modified:
ant/antlibs/antunit/trunk/src/main/org/apache/ant/antunit/LogCapturer.java
ant/antlibs/antunit/trunk/src/tests/junit/org/apache/ant/antunit/LogCapturerTest.java
Modified:
ant/antlibs/antunit/trunk/src/main/org/apache/ant/antunit/LogCapturer.java
URL:
http://svn.apache.org/viewvc/ant/antlibs/antunit/trunk/src/main/org/apache/ant/antunit/LogCapturer.java?rev=1592848&r1=1592847&r2=1592848&view=diff
==============================================================================
--- ant/antlibs/antunit/trunk/src/main/org/apache/ant/antunit/LogCapturer.java
(original)
+++ ant/antlibs/antunit/trunk/src/main/org/apache/ant/antunit/LogCapturer.java
Tue May 6 19:44:37 2014
@@ -20,6 +20,10 @@
package org.apache.ant.antunit;
+import java.util.Iterator;
+import java.util.List;
+import java.util.LinkedList;
+
import org.apache.tools.ant.BuildEvent;
import org.apache.tools.ant.BuildListener;
import org.apache.tools.ant.Project;
@@ -36,11 +40,7 @@ import org.apache.tools.ant.util.StringU
public class LogCapturer implements BuildListener {
public static final String REFERENCE_ID = "ant.antunit.log";
- private StringBuffer err = new StringBuffer();
- private StringBuffer warn = new StringBuffer();
- private StringBuffer info = new StringBuffer();
- private StringBuffer verbose = new StringBuffer();
- private StringBuffer debug = new StringBuffer();
+ private List/*<BuildEvent>*/ events = new LinkedList();
private Project p;
public LogCapturer(Project p) {
@@ -50,38 +50,84 @@ public class LogCapturer implements Buil
}
/**
- * All messages with <code>logLevel == Project.MSG_ERR</code>.
+ * All messages with <code>logLevel == Project.MSG_ERR</code>
+ * merging messages into a single line.
*/
public String getErrLog() {
- return err.toString();
+ return getErrLog(true);
}
/**
* All messages with <code>logLevel == Project.MSG_WARN</code> or
- * more severe.
+ * more severe merging messages into a single line.
*/
public String getWarnLog() {
- return warn.toString();
+ return getWarnLog(true);
}
/**
* All messages with <code>logLevel == Project.MSG_INFO</code> or
- * more severe.
+ * more severe merging messages into a single line.
*/
public String getInfoLog() {
- return info.toString();
+ return getInfoLog(true);
}
/**
* All messages with <code>logLevel == Project.MSG_VERBOSE</code> or
- * more severe.
+ * more severe merging messages into a single line.
*/
public String getVerboseLog() {
- return verbose.toString();
+ return getVerboseLog(true);
}
/**
* All messages with <code>logLevel == Project.MSG_DEBUG</code> or
- * more severe.
+ * more severe merging messages into a single line.
*/
public String getDebugLog() {
- return debug.toString();
+ return getDebugLog(true);
+ }
+
+ /**
+ * All messages with <code>logLevel == Project.MSG_ERR</code>.
+ * @param mergeLines whether to merge messages into a single line
+ * or split them into multiple lines
+ */
+ public String getErrLog(boolean mergeLines) {
+ return getLog(Project.MSG_ERR, mergeLines);
+ }
+ /**
+ * All messages with <code>logLevel == Project.MSG_WARN</code> or
+ * more severe.
+ * @param mergeLines whether to merge messages into a single line
+ * or split them into multiple lines
+ */
+ public String getWarnLog(boolean mergeLines) {
+ return getLog(Project.MSG_WARN, mergeLines);
+ }
+ /**
+ * All messages with <code>logLevel == Project.MSG_INFO</code> or
+ * more severe.
+ * @param mergeLines whether to merge messages into a single line
+ * or split them into multiple lines
+ */
+ public String getInfoLog(boolean mergeLines) {
+ return getLog(Project.MSG_INFO, mergeLines);
+ }
+ /**
+ * All messages with <code>logLevel == Project.MSG_VERBOSE</code> or
+ * more severe.
+ * @param mergeLines whether to merge messages into a single line
+ * or split them into multiple lines
+ */
+ public String getVerboseLog(boolean mergeLines) {
+ return getLog(Project.MSG_VERBOSE, mergeLines);
+ }
+ /**
+ * All messages with <code>logLevel == Project.MSG_DEBUG</code> or
+ * more severe.
+ * @param mergeLines whether to merge messages into a single line
+ * or split them into multiple lines
+ */
+ public String getDebugLog(boolean mergeLines) {
+ return getLog(Project.MSG_DEBUG, mergeLines);
}
/**
@@ -119,24 +165,24 @@ public class LogCapturer implements Buil
* Record the message.
*/
public void messageLogged(BuildEvent event) {
- if (event.getPriority() <= Project.MSG_ERR) {
- append(err, event);
- }
- if (event.getPriority() <= Project.MSG_WARN) {
- append(warn, event);
- }
- if (event.getPriority() <= Project.MSG_INFO) {
- append(info, event);
- }
- if (event.getPriority() <= Project.MSG_VERBOSE) {
- append(verbose, event);
- }
- if (event.getPriority() <= Project.MSG_DEBUG) {
- append(debug, event);
+ events.add(event);
+ }
+
+ private String getLog(int minPriority, boolean mergeLines) {
+ StringBuffer sb = new StringBuffer();
+ for (Iterator/*<BuildEvent>*/ it = events.iterator(); it.hasNext(); ) {
+ append(sb, (BuildEvent) it.next(), minPriority, mergeLines);
}
+ return sb.toString();
}
- private static void append(StringBuffer sb, BuildEvent event) {
- sb.append(event.getMessage()).append(StringUtils.LINE_SEP);
+ private static void append(StringBuffer sb, BuildEvent event,
+ int minPriority, boolean mergeLines) {
+ if (event.getPriority() <= minPriority) {
+ sb.append(event.getMessage());
+ if (!mergeLines) {
+ sb.append(StringUtils.LINE_SEP);
+ }
+ }
}
}
Modified:
ant/antlibs/antunit/trunk/src/tests/junit/org/apache/ant/antunit/LogCapturerTest.java
URL:
http://svn.apache.org/viewvc/ant/antlibs/antunit/trunk/src/tests/junit/org/apache/ant/antunit/LogCapturerTest.java?rev=1592848&r1=1592847&r2=1592848&view=diff
==============================================================================
---
ant/antlibs/antunit/trunk/src/tests/junit/org/apache/ant/antunit/LogCapturerTest.java
(original)
+++
ant/antlibs/antunit/trunk/src/tests/junit/org/apache/ant/antunit/LogCapturerTest.java
Tue May 6 19:44:37 2014
@@ -21,6 +21,7 @@ package org.apache.ant.antunit;
import org.apache.tools.ant.BuildEvent;
import org.apache.tools.ant.Project;
+import org.apache.tools.ant.util.StringUtils;
import junit.framework.Assert;
import junit.framework.TestCase;
@@ -55,6 +56,33 @@ public class LogCapturerTest extends Tes
assertMessages(c.getDebugLog(), messages, Project.MSG_DEBUG);
}
+ public void testWithoutMerge() {
+ Project p = new Project();
+ LogCapturer c = new LogCapturer(p);
+
+ for (int i = 0; i < 2; i++) {
+ BuildEvent be = new BuildEvent(p);
+ be.setMessage(String.valueOf(i), 0);
+ c.messageLogged(be);
+ }
+ Assert.assertEquals(c.getErrLog(false),
+ "0" + StringUtils.LINE_SEP
+ + "1" + StringUtils.LINE_SEP);
+ }
+
+ public void testWithMerge() {
+ Project p = new Project();
+ LogCapturer c = new LogCapturer(p);
+
+ for (int i = 0; i < 2; i++) {
+ BuildEvent be = new BuildEvent(p);
+ be.setMessage(String.valueOf(i), 0);
+ c.messageLogged(be);
+ }
+ Assert.assertEquals(c.getErrLog(), "01");
+ Assert.assertEquals(c.getErrLog(true), "01");
+ }
+
private static void assertMessages(String actual, String[] messages,
int upTo) {
for (int i = 0; i <= upTo && i < messages.length; i++) {
@@ -66,4 +94,4 @@ public class LogCapturerTest extends Tes
actual.indexOf(messages[i]) == -1);
}
}
-}
\ No newline at end of file
+}