Author: bodewig
Date: Mon Jul  4 06:35:24 2005
New Revision: 209073

URL: http://svn.apache.org/viewcvs?rev=209073&view=rev
Log:
Make log output available to test runs

Added:
    
ant/sandbox/antlibs/antunit/trunk/src/main/org/apache/ant/antunit/LogCapturer.java
   (with props)
Modified:
    ant/sandbox/antlibs/antunit/trunk/docs/antunit.html
    ant/sandbox/antlibs/antunit/trunk/src/etc/testcases/antunit/base.xml
    
ant/sandbox/antlibs/antunit/trunk/src/main/org/apache/ant/antunit/AntUnit.java
    
ant/sandbox/antlibs/antunit/trunk/src/testcases/org/apache/ant/antunit/AntUnitTest.java

Modified: ant/sandbox/antlibs/antunit/trunk/docs/antunit.html
URL: 
http://svn.apache.org/viewcvs/ant/sandbox/antlibs/antunit/trunk/docs/antunit.html?rev=209073&r1=209072&r2=209073&view=diff
==============================================================================
--- ant/sandbox/antlibs/antunit/trunk/docs/antunit.html (original)
+++ ant/sandbox/antlibs/antunit/trunk/docs/antunit.html Mon Jul  4 06:35:24 2005
@@ -36,6 +36,61 @@
     Currently only a single implementation of this interface is
     provided with this ant library.</p>
 
+    <p>Log output during each antunit test case is captured by an
+    instance of the LogCapturer class that is available via a project
+    reference named ant.antunit.log.  The published interface of that
+    class is:</p>
+
+    <pre>
+/*
+ * Copyright 2005 The Apache Software Foundation
+ *
+ *  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 org.apache.ant.antunit;
+
+public class LogCapturer {
+    public static final String REFERENCE_ID = "ant.antunit.log";
+
+    /**
+     * All messages with <code>logLevel == Project.MSG_ERR</code>.
+     */
+    public String getErrLog();
+    /**
+     * All messages with <code>logLevel == Project.MSG_WARN</code> or
+     * more severe.
+     */
+    public String getWarnLog();
+    /**
+     * All messages with <code>logLevel == Project.MSG_INFO</code> or
+     * more severe.
+     */
+    public String getInfoLog();
+    /**
+     * All messages with <code>logLevel == Project.MSG_VERBOSE</code> or
+     * more severe.
+     */
+    public String getVerboseLog();
+    /**
+     * All messages with <code>logLevel == Project.MSG_DEBUG</code> or
+     * more severe.
+     */
+    public String getDebugLog();
+}
+</pre>
+
     <h3>Parameters</h3>
     <p>This task doesn't support any attributes.</p>
 

Modified: ant/sandbox/antlibs/antunit/trunk/src/etc/testcases/antunit/base.xml
URL: 
http://svn.apache.org/viewcvs/ant/sandbox/antlibs/antunit/trunk/src/etc/testcases/antunit/base.xml?rev=209073&r1=209072&r2=209073&view=diff
==============================================================================
--- ant/sandbox/antlibs/antunit/trunk/src/etc/testcases/antunit/base.xml 
(original)
+++ ant/sandbox/antlibs/antunit/trunk/src/etc/testcases/antunit/base.xml Mon 
Jul  4 06:35:24 2005
@@ -45,6 +45,10 @@
     <fail message="test5 exits with error"/>
   </target>
 
+  <target name="testLogCaptureActive">
+    <au:assertReferenceSet refid="ant.antunit.log"/>
+  </target>
+
   <target name="tearDown">
     <echo>tearDown</echo>
   </target>

Modified: 
ant/sandbox/antlibs/antunit/trunk/src/main/org/apache/ant/antunit/AntUnit.java
URL: 
http://svn.apache.org/viewcvs/ant/sandbox/antlibs/antunit/trunk/src/main/org/apache/ant/antunit/AntUnit.java?rev=209073&r1=209072&r2=209073&view=diff
==============================================================================
--- 
ant/sandbox/antlibs/antunit/trunk/src/main/org/apache/ant/antunit/AntUnit.java 
(original)
+++ 
ant/sandbox/antlibs/antunit/trunk/src/main/org/apache/ant/antunit/AntUnit.java 
Mon Jul  4 06:35:24 2005
@@ -107,6 +107,7 @@
                         v.add(SETUP);
                     }
                     v.add(name);
+                    LogCapturer lc = new LogCapturer(newProject);
                     try {
                         newProject.executeTargets(v);
                     } catch (AssertionFailedException e) {

Added: 
ant/sandbox/antlibs/antunit/trunk/src/main/org/apache/ant/antunit/LogCapturer.java
URL: 
http://svn.apache.org/viewcvs/ant/sandbox/antlibs/antunit/trunk/src/main/org/apache/ant/antunit/LogCapturer.java?rev=209073&view=auto
==============================================================================
--- 
ant/sandbox/antlibs/antunit/trunk/src/main/org/apache/ant/antunit/LogCapturer.java
 (added)
+++ 
ant/sandbox/antlibs/antunit/trunk/src/main/org/apache/ant/antunit/LogCapturer.java
 Mon Jul  4 06:35:24 2005
@@ -0,0 +1,135 @@
+/*
+ * Copyright 2005 The Apache Software Foundation
+ *
+ *  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 org.apache.ant.antunit;
+
+import org.apache.tools.ant.BuildEvent;
+import org.apache.tools.ant.BuildException;
+import org.apache.tools.ant.BuildListener;
+import org.apache.tools.ant.Project;
+
+/**
+ * Captures log messages generated during an antunit task run and
+ * makes it available to tasks via a project reference.
+ *
+ * <p>This class captures all messaged generated during the build and
+ * adds itself as project reference to the project using the id
+ * <code>ant.antunit.log</code>.</p>
+ */
+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 Project p;
+
+    public LogCapturer(Project p) {
+        this.p = p;
+        p.addBuildListener(this);
+        p.addReference(REFERENCE_ID, this);
+    }
+
+    /**
+     * All messages with <code>logLevel == Project.MSG_ERR</code>.
+     */
+    public String getErrLog() {
+        return err.toString();
+    }
+    /**
+     * All messages with <code>logLevel == Project.MSG_WARN</code> or
+     * more severe.
+     */
+    public String getWarnLog() {
+        return warn.toString();
+    }
+    /**
+     * All messages with <code>logLevel == Project.MSG_INFO</code> or
+     * more severe.
+     */
+    public String getInfoLog() {
+        return info.toString();
+    }
+    /**
+     * All messages with <code>logLevel == Project.MSG_VERBOSE</code> or
+     * more severe.
+     */
+    public String getVerboseLog() {
+        return verbose.toString();
+    }
+    /**
+     * All messages with <code>logLevel == Project.MSG_DEBUG</code> or
+     * more severe.
+     */
+    public String getDebugLog() {
+        return debug.toString();
+    }
+
+    /**
+     * Empty.
+     */
+    public void buildStarted(BuildEvent event) {}
+    /**
+     * Empty.
+     */
+    public void targetStarted(BuildEvent event) {}
+    /**
+     * Empty.
+     */
+    public void targetFinished(BuildEvent event) {}
+    /**
+     * Empty.
+     */
+    public void taskStarted(BuildEvent event) {}
+    /**
+     * Empty.
+     */
+    public void taskFinished(BuildEvent event) {}
+
+    /**
+     * De-register.
+     */
+    public void buildFinished(BuildEvent event) {
+        if (p != null && event.getProject() == p) {
+            p.removeBuildListener(this);
+            p.getReferences().remove(REFERENCE_ID);
+            p = null;
+        }
+    }
+    /**
+     * Record the message.
+     */
+    public void messageLogged(BuildEvent event) {
+        if (event.getPriority() <= Project.MSG_ERR) {
+            err.append(event.getMessage());
+        }
+        if (event.getPriority() <= Project.MSG_WARN) {
+            warn.append(event.getMessage());
+        }
+        if (event.getPriority() <= Project.MSG_INFO) {
+            info.append(event.getMessage());
+        }
+        if (event.getPriority() <= Project.MSG_VERBOSE) {
+            verbose.append(event.getMessage());
+        }
+        if (event.getPriority() <= Project.MSG_DEBUG) {
+            debug.append(event.getMessage());
+        }
+    }
+}
\ No newline at end of file

Propchange: 
ant/sandbox/antlibs/antunit/trunk/src/main/org/apache/ant/antunit/LogCapturer.java
------------------------------------------------------------------------------
    svn:eol-style = native

Modified: 
ant/sandbox/antlibs/antunit/trunk/src/testcases/org/apache/ant/antunit/AntUnitTest.java
URL: 
http://svn.apache.org/viewcvs/ant/sandbox/antlibs/antunit/trunk/src/testcases/org/apache/ant/antunit/AntUnitTest.java?rev=209073&r1=209072&r2=209073&view=diff
==============================================================================
--- 
ant/sandbox/antlibs/antunit/trunk/src/testcases/org/apache/ant/antunit/AntUnitTest.java
 (original)
+++ 
ant/sandbox/antlibs/antunit/trunk/src/testcases/org/apache/ant/antunit/AntUnitTest.java
 Mon Jul  4 06:35:24 2005
@@ -37,7 +37,7 @@
         index = log.indexOf("sandbox/antlibs/antunit/trunk/src/etc/testcases/"
                             + "antunit/base.xml", index);
         assertTrue("file name", index > -1);
-        index = log.indexOf("Tests run: 4, Failures: 1, Errors: 1, Time "
+        index = log.indexOf("Tests run: 5, Failures: 1, Errors: 1, Time "
                             + "elapsed: ", index);
         assertTrue("summary", index > -1);
         assertTrue("test1", log.indexOf("test1", index) > -1);
@@ -45,6 +45,8 @@
         assertTrue("test3", log.indexOf("test3", index) == -1);
         assertTrue("test4", log.indexOf("test4", index) > -1);
         assertTrue("test5", log.indexOf("test5", index) > -1);
+        assertTrue("testLogCaptureActive",
+                   log.indexOf("testLogCaptureActive", index) > -1);
         int index2 = log.indexOf("Caused an ERROR", index);
         assertTrue("test5 error", index2 > -1
                    && log.indexOf("test5 exits with error", index2) > -1);



---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]

Reply via email to