Author: bodewig Date: Sat Sep 9 12:44:17 2006 New Revision: 441847 URL: http://svn.apache.org/viewvc?view=rev&rev=441847 Log: make sure we get the [antunit] banner in plainlistener
Modified: ant/antlibs/antunit/trunk/src/main/org/apache/ant/antunit/AntUnit.java ant/antlibs/antunit/trunk/src/main/org/apache/ant/antunit/AntUnitListener.java ant/antlibs/antunit/trunk/src/main/org/apache/ant/antunit/listener/BaseAntUnitListener.java Modified: ant/antlibs/antunit/trunk/src/main/org/apache/ant/antunit/AntUnit.java URL: http://svn.apache.org/viewvc/ant/antlibs/antunit/trunk/src/main/org/apache/ant/antunit/AntUnit.java?view=diff&rev=441847&r1=441846&r2=441847 ============================================================================== --- ant/antlibs/antunit/trunk/src/main/org/apache/ant/antunit/AntUnit.java (original) +++ ant/antlibs/antunit/trunk/src/main/org/apache/ant/antunit/AntUnit.java Sat Sep 9 12:44:17 2006 @@ -131,6 +131,7 @@ */ public void add(AntUnitListener al) { listeners.add(al); + al.setParentTask(this); } /** @@ -250,6 +251,12 @@ fireError(name, e); } } finally { + // fire endTest her instead of the endTarget + // event, otherwise an error would be + // registered after the endTest event - + // endTarget is called before out catch block + // is reached. + fireEndTest(name); // clean up if (tearDown != null) { newProject.executeTarget(TEARDOWN); @@ -391,6 +398,17 @@ } /** + * invokes endTest on all registered test listeners. + */ + private void fireEndTest(String targetName) { + Iterator it = listeners.iterator(); + while (it.hasNext()) { + AntUnitListener al = (AntUnitListener) it.next(); + al.endTest(targetName); + } + } + + /** * Adapts AntUnitListener to BuildListener. */ private class BuildToAntUnitListener implements BuildListener { @@ -415,10 +433,6 @@ } } public void targetFinished(BuildEvent event) { - String tName = event.getTarget().getName(); - if (tName.startsWith(TEST)) { - a.endTest(tName); - } } public void taskStarted(BuildEvent event) {} public void taskFinished(BuildEvent event) {} Modified: ant/antlibs/antunit/trunk/src/main/org/apache/ant/antunit/AntUnitListener.java URL: http://svn.apache.org/viewvc/ant/antlibs/antunit/trunk/src/main/org/apache/ant/antunit/AntUnitListener.java?view=diff&rev=441847&r1=441846&r2=441847 ============================================================================== --- ant/antlibs/antunit/trunk/src/main/org/apache/ant/antunit/AntUnitListener.java (original) +++ ant/antlibs/antunit/trunk/src/main/org/apache/ant/antunit/AntUnitListener.java Sat Sep 9 12:44:17 2006 @@ -21,11 +21,18 @@ package org.apache.ant.antunit; import org.apache.tools.ant.Project; +import org.apache.tools.ant.Task; /** * A test listener for <antunit>. */ public interface AntUnitListener { + /** + * Set a reference to the AntUnit task executing the tests, this + * provides access to the containing project, target or Ant's + * logging system. + */ + void setParentTask(Task t); /** * Invoked once per build file, before any targets get executed. */ Modified: ant/antlibs/antunit/trunk/src/main/org/apache/ant/antunit/listener/BaseAntUnitListener.java URL: http://svn.apache.org/viewvc/ant/antlibs/antunit/trunk/src/main/org/apache/ant/antunit/listener/BaseAntUnitListener.java?view=diff&rev=441847&r1=441846&r2=441847 ============================================================================== --- ant/antlibs/antunit/trunk/src/main/org/apache/ant/antunit/listener/BaseAntUnitListener.java (original) +++ ant/antlibs/antunit/trunk/src/main/org/apache/ant/antunit/listener/BaseAntUnitListener.java Sat Sep 9 12:44:17 2006 @@ -32,8 +32,9 @@ import org.apache.ant.antunit.AssertionFailedException; import org.apache.tools.ant.BuildException; +import org.apache.tools.ant.Location; import org.apache.tools.ant.Project; -import org.apache.tools.ant.ProjectComponent; +import org.apache.tools.ant.Task; import org.apache.tools.ant.taskdefs.LogOutputStream; import org.apache.tools.ant.types.EnumeratedAttribute; import org.apache.tools.ant.util.FileUtils; @@ -43,7 +44,7 @@ * A test listener for <antunit> modeled aftern the Plain JUnit * test listener that is part of Ant. */ -public abstract class BaseAntUnitListener extends ProjectComponent +public abstract class BaseAntUnitListener implements AntUnitListener { protected BaseAntUnitListener(SendLogTo defaultReportTarget, @@ -87,6 +88,19 @@ private SendLogTo logTo; /** + * Where to send the test report. + */ + protected void setSendLogTo(SendLogTo logTo) { + this.logTo = logTo; + } + + private Task parentTask; + + public void setParentTask(Task t) { + parentTask = t; + } + + /** * keeps track of the numer of executed targets, the failures an errors. */ protected int runCount, failureCount, errorCount; @@ -95,13 +109,6 @@ */ protected long start, testStart; - /** - * Where to send the test report. - */ - protected void setSendLogTo(SendLogTo logTo) { - this.logTo = logTo; - } - public void startTestSuite(Project testProject, String buildFile) { start = System.currentTimeMillis(); runCount = failureCount = errorCount = 0; @@ -129,7 +136,11 @@ l = f = null; if (logTo.getValue().equals(SendLogTo.ANT_LOG) || logTo.getValue().equals(SendLogTo.BOTH)) { - l = new LogOutputStream(this, Project.MSG_INFO); + if (parentTask != null) { + l = new LogOutputStream(parentTask, Project.MSG_INFO); + } else { + l = System.out; + } if (logTo.getValue().equals(SendLogTo.ANT_LOG)) { return l; } @@ -139,7 +150,9 @@ String fileName = "TEST-" + normalize(buildFile) + "." + extension; File file = toDir == null - ? getProject().resolveFile(fileName) + ? (parentTask != null + ? parentTask.getProject().resolveFile(fileName) + : new File(fileName)) : new File(toDir, fileName); try { f = new FileOutputStream(file); @@ -159,9 +172,11 @@ * junitreport. */ protected final String normalize(String buildFile) { + File base = parentTask != null + ? parentTask.getProject().getBaseDir() + : new File(System.getProperty("user.dir")); buildFile = FileUtils.getFileUtils() - .removeLeadingPath(getProject().getBaseDir(), - new File(buildFile)); + .removeLeadingPath(base, new File(buildFile)); if (buildFile.length() > 0 && buildFile.charAt(0) == File.separatorChar) { buildFile = buildFile.substring(1); @@ -169,6 +184,17 @@ return buildFile.replace('.', '_').replace(':', '_') .replace(File.separatorChar, '.'); + } + + protected final Location getLocation(Throwable t) { + Location l = Location.UNKNOWN_LOCATION; + if (t instanceof BuildException) { + Location l2 = ((BuildException) t).getLocation(); + if (l2 != null) { + l = l2; + } + } + return l; } public static class SendLogTo extends EnumeratedAttribute { --------------------------------------------------------------------- To unsubscribe, e-mail: [EMAIL PROTECTED] For additional commands, e-mail: [EMAIL PROTECTED]