diff --git a/src/main/org/apache/tools/ant/DefaultLogger.java b/src/main/org/apache/tools/ant/DefaultLogger.java index 43027f7d8..61b80dc1a 100644 --- a/src/main/org/apache/tools/ant/DefaultLogger.java +++ b/src/main/org/apache/tools/ant/DefaultLogger.java @@ -252,14 +252,19 @@ public class DefaultLogger implements BuildLogger { new StringReader(event.getMessage())); String line = r.readLine(); boolean first = true; - while (line != null) { - if (!first) { + do { + if (first) { + if (line == null) { + message.append(label); + break; + } + } else { message.append(StringUtils.LINE_SEP); } first = false; message.append(label).append(line); line = r.readLine(); - } + } while (line != null); } catch (IOException e) { // shouldn't be possible message.append(label).append(event.getMessage()); diff --git a/src/tests/junit/org/apache/tools/ant/taskdefs/EchoTest.java b/src/tests/junit/org/apache/tools/ant/taskdefs/EchoTest.java index 31df91dd3..2a677cf70 100644 --- a/src/tests/junit/org/apache/tools/ant/taskdefs/EchoTest.java +++ b/src/tests/junit/org/apache/tools/ant/taskdefs/EchoTest.java @@ -18,7 +18,12 @@ package org.apache.tools.ant.taskdefs; +import java.io.ByteArrayOutputStream; +import java.io.PrintStream; + import org.apache.tools.ant.BuildFileTest; +import org.apache.tools.ant.DefaultLogger; +import org.apache.tools.ant.Project; /** */ @@ -39,8 +44,16 @@ public class EchoTest extends BuildFileTest { // Output an empty String public void test1() { expectLog("test1", ""); + expectOutput("test1",""); } - + + public void testLogBlankEcho() { + EchoTestLogger logger = new EchoTestLogger(); + getProject().addBuildListener(logger); + getProject().executeTarget("test1"); + assertEquals(" [echo] ", logger.lastLoggedMessage ); + } + // Output 'OUTPUT OF ECHO' public void test2() { expectLog("test2", "OUTPUT OF ECHO"); @@ -74,4 +87,26 @@ public class EchoTest extends BuildFileTest { public void testUTF8Encoding() throws Exception { executeTarget("testUTF8Encoding"); } + + private class EchoTestLogger extends DefaultLogger { + String lastLoggedMessage; + + + /** + * + */ + public EchoTestLogger() { + super(); + this.setMessageOutputLevel(Project.MSG_DEBUG); + this.setOutputPrintStream(new PrintStream(new ByteArrayOutputStream(256))); + this.setErrorPrintStream(new PrintStream(new ByteArrayOutputStream(256))); + } + /* + * @param message + */ + protected void log(String message) { + this.lastLoggedMessage = message; + } + + } }