You are viewing a plain text version of this content. The canonical link for it is here.
Posted to notifications@ant.apache.org by bo...@apache.org on 2008/04/08 12:30:49 UTC
svn commit: r645829 - in /ant/antlibs/antunit/trunk: docs/
src/etc/testcases/listener/ src/main/org/apache/ant/antunit/listener/
src/tests/junit/org/apache/ant/antunit/listener/
Author: bodewig
Date: Tue Apr 8 03:30:44 2008
New Revision: 645829
URL: http://svn.apache.org/viewvc?rev=645829&view=rev
Log:
Add logging of messages to plainlistener, based on code submitted by David Jackman
Added:
ant/antlibs/antunit/trunk/src/etc/testcases/listener/
ant/antlibs/antunit/trunk/src/etc/testcases/listener/plainlistener.xml (with props)
ant/antlibs/antunit/trunk/src/tests/junit/org/apache/ant/antunit/listener/
ant/antlibs/antunit/trunk/src/tests/junit/org/apache/ant/antunit/listener/PlainListenerTest.java (with props)
Modified:
ant/antlibs/antunit/trunk/docs/plainlistener.html
ant/antlibs/antunit/trunk/docs/xmllistener.html
ant/antlibs/antunit/trunk/src/main/org/apache/ant/antunit/listener/PlainAntUnitListener.java
Modified: ant/antlibs/antunit/trunk/docs/plainlistener.html
URL: http://svn.apache.org/viewvc/ant/antlibs/antunit/trunk/docs/plainlistener.html?rev=645829&r1=645828&r2=645829&view=diff
==============================================================================
--- ant/antlibs/antunit/trunk/docs/plainlistener.html (original)
+++ ant/antlibs/antunit/trunk/docs/plainlistener.html Tue Apr 8 03:30:44 2008
@@ -51,7 +51,14 @@
basedir.</td>
<td align="center">No.</td>
</tr>
+ <tr>
+ <td valign="top">logLevel</td>
+ <td valign="top">Log level for messages from the tests to
+ include in the report. Must be one of: none, error, warn,
+ warning, info, verbose, and debug. Messages at the given level
+ or below will be included.</td>
+ <td align="center">No. Default is 'none'.</td>
+ </tr>
</table>
-
</body>
</html>
Modified: ant/antlibs/antunit/trunk/docs/xmllistener.html
URL: http://svn.apache.org/viewvc/ant/antlibs/antunit/trunk/docs/xmllistener.html?rev=645829&r1=645828&r2=645829&view=diff
==============================================================================
--- ant/antlibs/antunit/trunk/docs/xmllistener.html (original)
+++ ant/antlibs/antunit/trunk/docs/xmllistener.html Tue Apr 8 03:30:44 2008
@@ -51,6 +51,14 @@
to. Defaults to the project's basedir.</td>
<td align="center">No.</td>
</tr>
+ <tr>
+ <td valign="top">logLevel</td>
+ <td valign="top">Log level for messages from the tests to
+ include in the report. Must be one of: none, error, warn,
+ warning, info, verbose, and debug. Messages at the given level
+ or below will be included.</td>
+ <td align="center">No. Default is 'none'.</td>
+ </tr>
</table>
<h3>Examples</h3>
Added: ant/antlibs/antunit/trunk/src/etc/testcases/listener/plainlistener.xml
URL: http://svn.apache.org/viewvc/ant/antlibs/antunit/trunk/src/etc/testcases/listener/plainlistener.xml?rev=645829&view=auto
==============================================================================
--- ant/antlibs/antunit/trunk/src/etc/testcases/listener/plainlistener.xml (added)
+++ ant/antlibs/antunit/trunk/src/etc/testcases/listener/plainlistener.xml Tue Apr 8 03:30:44 2008
@@ -0,0 +1,104 @@
+<?xml version="1.0"?>
+<!--
+Licensed to the Apache Software Foundation (ASF) under one
+or more contributor license agreements. See the NOTICE file
+distributed with this work for additional information
+regarding copyright ownership. The ASF licenses this file
+to you 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.
+-->
+
+<project name="plainlistener-test"
+ default="all"
+ xmlns:au="antlib:org.apache.ant.antunit">
+
+
+ <target name="showdefault">
+ <au:antunit failOnError="false">
+ <file file="${ant.file}" />
+ <au:plainlistener />
+ </au:antunit>
+ </target>
+
+ <target name="showerror">
+ <au:antunit failOnError="false">
+ <file file="${ant.file}" />
+ <au:plainlistener logLevel="error" />
+ </au:antunit>
+ </target>
+
+ <target name="showwarning">
+ <au:antunit failOnError="false">
+ <file file="${ant.file}" />
+ <au:plainlistener logLevel="warning" />
+ </au:antunit>
+ </target>
+
+ <target name="showinfo">
+ <au:antunit failOnError="false">
+ <file file="${ant.file}" />
+ <au:plainlistener logLevel="info" />
+ </au:antunit>
+ </target>
+
+ <target name="showverbose">
+ <au:antunit failOnError="false">
+ <file file="${ant.file}" />
+ <au:plainlistener logLevel="verbose" />
+ </au:antunit>
+ </target>
+
+ <target name="showdebug">
+ <au:antunit failOnError="false">
+ <file file="${ant.file}" />
+ <au:plainlistener logLevel="debug" />
+ </au:antunit>
+ </target>
+
+ <target name="shownone">
+ <au:antunit failOnError="false">
+ <file file="${ant.file}" />
+ <au:plainlistener logLevel="none" />
+ </au:antunit>
+ </target>
+
+
+ <target name="suiteSetUp">
+ <echo>suiteSetUp</echo>
+ </target>
+
+ <target name="suiteTearDown">
+ <echo>suiteTearDown</echo>
+ </target>
+
+ <target name="setUp">
+ <echo>setUp</echo>
+ </target>
+
+ <target name="tearDown">
+ <echo>tearDown</echo>
+ </target>
+
+ <target name="testEcho">
+ <echo level="debug">debugmessage</echo>
+ <echo level="verbose">verbosemessage</echo>
+ <echo level="info">infomessage</echo>
+ <echo level="warning">warningmessage</echo>
+ <echo level="error">errormessage</echo>
+ </target>
+
+ <target name="test2">
+ <echo>test2</echo>
+ </target>
+
+</project>
Propchange: ant/antlibs/antunit/trunk/src/etc/testcases/listener/plainlistener.xml
------------------------------------------------------------------------------
svn:eol-style = native
Propchange: ant/antlibs/antunit/trunk/src/etc/testcases/listener/plainlistener.xml
------------------------------------------------------------------------------
svn:executable = *
Modified: ant/antlibs/antunit/trunk/src/main/org/apache/ant/antunit/listener/PlainAntUnitListener.java
URL: http://svn.apache.org/viewvc/ant/antlibs/antunit/trunk/src/main/org/apache/ant/antunit/listener/PlainAntUnitListener.java?rev=645829&r1=645828&r2=645829&view=diff
==============================================================================
--- ant/antlibs/antunit/trunk/src/main/org/apache/ant/antunit/listener/PlainAntUnitListener.java (original)
+++ ant/antlibs/antunit/trunk/src/main/org/apache/ant/antunit/listener/PlainAntUnitListener.java Tue Apr 8 03:30:44 2008
@@ -27,6 +27,7 @@
import org.apache.ant.antunit.AssertionFailedException;
+import org.apache.tools.ant.BuildEvent;
import org.apache.tools.ant.BuildException;
import org.apache.tools.ant.Location;
import org.apache.tools.ant.Project;
@@ -45,6 +46,12 @@
* Convenience layer on top of {@link #inner inner}.
*/
private PrintWriter wri;
+ /**
+ * Collects log messages.
+ */
+ private StringBuffer log = new StringBuffer();
+
+ private static final String NEW_LINE = System.getProperty("line.separator");
public PlainAntUnitListener() {
super(new BaseAntUnitListener.SendLogTo(SendLogTo.ANT_LOG), "txt");
@@ -62,10 +69,9 @@
inner = new StringWriter();
wri = new PrintWriter(inner);
out = getOut(buildFile);
- String newLine = System.getProperty("line.separator");
StringBuffer sb = new StringBuffer("Build File: ");
sb.append(buildFile);
- sb.append(newLine);
+ sb.append(NEW_LINE);
try {
out.write(sb.toString().getBytes());
out.flush();
@@ -76,7 +82,6 @@
public void endTestSuite(Project testProject, String buildFile) {
long runTime = System.currentTimeMillis() - start;
- String newLine = System.getProperty("line.separator");
StringBuffer sb = new StringBuffer("Tests run: ");
sb.append(runCount);
sb.append(", Failures: ");
@@ -86,7 +91,16 @@
sb.append(", Time elapsed: ");
sb.append(nf.format(runTime/ 1000.0));
sb.append(" sec");
- sb.append(newLine);
+ sb.append(NEW_LINE);
+
+ if (log.length() > 0) {
+ sb.append("------------- Log Output ---------------");
+ sb.append(NEW_LINE);
+ sb.append(log.toString());
+ log.setLength(0);
+ sb.append("------------- ---------------- ---------------");
+ sb.append(NEW_LINE);
+ }
if (out != null) {
try {
@@ -133,6 +147,11 @@
}
wri.println("\tMessage: " + t.getMessage());
wri.print("\t");
+ }
+
+ protected void messageLogged(BuildEvent event) {
+ log.append(event.getMessage());
+ log.append(NEW_LINE);
}
}
Added: ant/antlibs/antunit/trunk/src/tests/junit/org/apache/ant/antunit/listener/PlainListenerTest.java
URL: http://svn.apache.org/viewvc/ant/antlibs/antunit/trunk/src/tests/junit/org/apache/ant/antunit/listener/PlainListenerTest.java?rev=645829&view=auto
==============================================================================
--- ant/antlibs/antunit/trunk/src/tests/junit/org/apache/ant/antunit/listener/PlainListenerTest.java (added)
+++ ant/antlibs/antunit/trunk/src/tests/junit/org/apache/ant/antunit/listener/PlainListenerTest.java Tue Apr 8 03:30:44 2008
@@ -0,0 +1,148 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you 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 org.apache.ant.antunit.listener;
+
+import org.apache.tools.ant.BuildFileTest;
+
+/**
+ * Tests the plain listener.
+ */
+public class PlainListenerTest extends BuildFileTest {
+ protected void setUp() throws Exception {
+ configureProject("src/etc/testcases/listener/plainlistener.xml");
+ }
+
+ public void testStdoutPlacement() {
+ executeTarget("showinfo");
+ String log = getLog();
+ int indexElapsed = log.indexOf("Time elapsed");
+ int indexTarget = log.indexOf("Target");
+ int index = log.indexOf("------------- Log Output ---------------");
+ assertTrue("Standard output message not present", index > -1);
+ assertTrue("Standard output message not located after summary.", index > indexElapsed);
+ assertTrue("Standard output message not located before test details.", index < indexTarget);
+ int indexTest1 = log.indexOf("infomessage", index);
+ int indexTest2 = log.indexOf("test2", index);
+ assertTrue("infomessage", indexTest1 > -1);
+ assertTrue("test2", indexTest2 > -1);
+ index = log.indexOf("------------- ---------------- ---------------", Math.max(indexTest1, indexTest2));
+ assertTrue("End of standard output message not present.", index > -1);
+ assertTrue("End of standard output message not located before test details.", index < indexTarget);
+ }
+
+ public void testShowDefault() {
+ executeTarget("showdefault");
+ String log = getLog();
+ assertTrue("Should not have shown error message", -1 == log.indexOf("errormessage"));
+ assertTrue("Should not have shown warning message", -1 == log.indexOf("warningmessage"));
+ assertTrue("Should not have shown info message", -1 == log.indexOf("infomessage"));
+ assertTrue("Should not have shown verbose message", -1 == log.indexOf("verbosemessage"));
+ assertTrue("Should not have shown debug message", -1 == log.indexOf("debugmessage"));
+ }
+
+ public void testShowError() {
+ executeTarget("showerror");
+ String log = getLog();
+ assertTrue("Should have shown error message", -1 != log.indexOf("errormessage"));
+ assertTrue("Should not have shown warning message", -1 == log.indexOf("warningmessage"));
+ assertTrue("Should not have shown info message", -1 == log.indexOf("infomessage"));
+ assertTrue("Should not have shown verbose message", -1 == log.indexOf("verbosemessage"));
+ assertTrue("Should not have shown debug message", -1 == log.indexOf("debugmessage"));
+ }
+
+ public void testShowWarning() {
+ executeTarget("showwarning");
+ String log = getLog();
+ assertTrue("Should have shown error message", -1 != log.indexOf("errormessage"));
+ assertTrue("Should have shown warning message", -1 != log.indexOf("warningmessage"));
+ assertTrue("Should not have shown info message", -1 == log.indexOf("infomessage"));
+ assertTrue("Should not have shown verbose message", -1 == log.indexOf("verbosemessage"));
+ assertTrue("Should not have shown debug message", -1 == log.indexOf("debugmessage"));
+ }
+
+ public void testShowInfo() {
+ executeTarget("showinfo");
+ String log = getLog();
+ assertTrue("Should have shown error message", -1 != log.indexOf("errormessage"));
+ assertTrue("Should have shown warning message", -1 != log.indexOf("warningmessage"));
+ assertTrue("Should have shown info message", -1 != log.indexOf("infomessage"));
+ assertTrue("Should not have shown verbose message", -1 == log.indexOf("verbosemessage"));
+ assertTrue("Should not have shown debug message", -1 == log.indexOf("debugmessage"));
+ }
+
+ public void testShowVerbose() {
+ executeTarget("showverbose");
+ String log = getLog();
+ assertTrue("Should have shown error message", -1 != log.indexOf("errormessage"));
+ assertTrue("Should have shown warning message", -1 != log.indexOf("warningmessage"));
+ assertTrue("Should have shown info message", -1 != log.indexOf("infomessage"));
+ assertTrue("Should have shown verbose message", -1 != log.indexOf("verbosemessage"));
+ assertTrue("Should not have shown debug message", -1 == log.indexOf("debugmessage"));
+ }
+
+ public void testShowDebug() {
+ executeTarget("showdebug");
+ String log = getLog();
+ assertTrue("Should have shown error message", -1 != log.indexOf("errormessage"));
+ assertTrue("Should have shown warning message", -1 != log.indexOf("warningmessage"));
+ assertTrue("Should have shown info message", -1 != log.indexOf("infomessage"));
+ assertTrue("Should have shown verbose message", -1 != log.indexOf("verbosemessage"));
+ assertTrue("Should have shown debug message", -1 != log.indexOf("debugmessage"));
+ }
+
+ public void testShowNone() {
+ executeTarget("shownone");
+ String log = getLog();
+ assertTrue("Should not have shown error message", -1 == log.indexOf("errormessage"));
+ assertTrue("Should not have shown warning message", -1 == log.indexOf("warningmessage"));
+ assertTrue("Should not have shown info message", -1 == log.indexOf("infomessage"));
+ assertTrue("Should not have shown verbose message", -1 == log.indexOf("verbosemessage"));
+ assertTrue("Should not have shown debug message", -1 == log.indexOf("debugmessage"));
+ }
+
+ public void testSetUpTearDown() {
+ executeTarget("showinfo");
+ String log = getLog();
+ int index = log.indexOf("setUp");
+ assertTrue("First setUp not present", index > -1);
+ index = log.indexOf("setUp", index);
+ assertTrue("Second setUp not present", index > -1);
+ index = log.indexOf("tearDown");
+ assertTrue("First tearDown not present", index > -1);
+ index = log.indexOf("tearDown", index);
+ assertTrue("Second tearDown not present", index > -1);
+ }
+
+ /*
+ public void testSuiteSetUpTearDown() {
+ executeTarget("showinfo");
+ String log = getLog();
+ int index = log.indexOf("suiteSetUp");
+ assertTrue("suiteSetUp not present", index > -1);
+ index = log.indexOf("suiteSetUp", index + 1);
+ assertTrue("suiteSetUp present more than once", index == -1);
+ index = log.indexOf("suiteTearDown");
+ assertTrue("suiteTearDown not present", index > -1);
+ index = log.indexOf("suiteTearDown", index + 1);
+ assertTrue("suiteTearDown present more than once", index == -1);
+ }
+ */
+}
\ No newline at end of file
Propchange: ant/antlibs/antunit/trunk/src/tests/junit/org/apache/ant/antunit/listener/PlainListenerTest.java
------------------------------------------------------------------------------
svn:eol-style = native
Propchange: ant/antlibs/antunit/trunk/src/tests/junit/org/apache/ant/antunit/listener/PlainListenerTest.java
------------------------------------------------------------------------------
svn:executable = *