Submitted by: Stephane Bailliez <sbailliez@imediation.com> git-svn-id: https://svn.apache.org/repos/asf/ant/core/trunk@268368 13f79535-47bb-0310-9956-ffa450edef68master
| @@ -23,7 +23,7 @@ | |||
| * Alternately, this acknowlegement may appear in the software itself, | |||
| * if and wherever such third-party acknowlegements normally appear. | |||
| * | |||
| * 4. The names "The Jakarta Project", "Tomcat", and "Apache Software | |||
| * 4. The names "The Jakarta Project", "Ant", and "Apache Software | |||
| * Foundation" must not be used to endorse or promote products derived | |||
| * from this software without prior written permission. For written | |||
| * permission, please contact apache@apache.org. | |||
| @@ -54,12 +54,14 @@ | |||
| package org.apache.tools.ant.taskdefs.optional.junit; | |||
| import java.io.File; | |||
| import java.util.Vector; | |||
| /** | |||
| * Baseclass for BatchTest and JUnitTest. | |||
| * | |||
| * @author <a href="mailto:stefan.bodewig@megabit.net">Stefan Bodewig</a> | |||
| * @author <a href="mailto:stefan.bodewig@epost.de">Stefan Bodewig</a> | |||
| * @author <a href="mailto:sbailliez@imediation.com">Stephane Bailliez</a> | |||
| */ | |||
| public abstract class BaseTest { | |||
| protected boolean haltOnError = false; | |||
| @@ -68,6 +70,8 @@ public abstract class BaseTest { | |||
| protected String ifProperty = null; | |||
| protected String unlessProperty = null; | |||
| protected Vector formatters = new Vector(); | |||
| /** destination directory */ | |||
| protected File destDir = null; | |||
| public void setFork(boolean value) { | |||
| fork = value; | |||
| @@ -104,4 +108,23 @@ public abstract class BaseTest { | |||
| public void addFormatter(FormatterElement elem) { | |||
| formatters.addElement(elem); | |||
| } | |||
| /** | |||
| * Sets the destination directory. | |||
| */ | |||
| public void setTodir(File destDir) { | |||
| this.destDir = destDir; | |||
| } | |||
| /** | |||
| * @return the destination directory as an absolute path if it exists | |||
| * otherwise return <tt>null</tt> | |||
| */ | |||
| public String getTodir(){ | |||
| if (destDir != null){ | |||
| return destDir.getAbsolutePath(); | |||
| } | |||
| return null; | |||
| } | |||
| } | |||
| @@ -23,7 +23,7 @@ | |||
| * Alternately, this acknowlegement may appear in the software itself, | |||
| * if and wherever such third-party acknowlegements normally appear. | |||
| * | |||
| * 4. The names "The Jakarta Project", "Tomcat", and "Apache Software | |||
| * 4. The names "The Jakarta Project", "Ant", and "Apache Software | |||
| * Foundation" must not be used to endorse or promote products derived | |||
| * from this software without prior written permission. For written | |||
| * permission, please contact apache@apache.org. | |||
| @@ -61,12 +61,14 @@ import org.apache.tools.ant.types.FileSet; | |||
| import org.apache.tools.ant.types.Reference; | |||
| import java.util.*; | |||
| import java.io.File; | |||
| /** | |||
| * Create JUnitTests from a list of files. | |||
| * | |||
| * @author <a href="mailto:jeff.martin@synamic.co.uk">Jeff Martin</a> | |||
| * @author <a href="mailto:stefan.bodewig@megabit.net">Stefan Bodewig</a> | |||
| * @author <a href="mailto:stefan.bodewig@epost.de">Stefan Bodewig</a> | |||
| * @author <a href="mailto:sbailliez@imediation.com">Stephane Bailliez</a> | |||
| */ | |||
| public final class BatchTest extends BaseTest { | |||
| private Project project; | |||
| @@ -87,8 +89,9 @@ public final class BatchTest extends BaseTest { | |||
| public class FileList implements Enumeration{ | |||
| private String files[]=null; | |||
| private int i=0; | |||
| private FileList(){ | |||
| Vector v = new Vector(); | |||
| for (int j=0; j<filesets.size(); j++) { | |||
| @@ -108,10 +111,12 @@ public final class BatchTest extends BaseTest { | |||
| files = new String[v.size()]; | |||
| v.copyInto(files); | |||
| } | |||
| public final boolean hasMoreElements(){ | |||
| if(i<files.length)return true; | |||
| return false; | |||
| } | |||
| public final Object nextElement() throws NoSuchElementException{ | |||
| if(hasMoreElements()){ | |||
| JUnitTest test = new JUnitTest(javaToClass(files[i])); | |||
| @@ -120,6 +125,7 @@ public final class BatchTest extends BaseTest { | |||
| test.setFork(fork); | |||
| test.setIf(ifProperty); | |||
| test.setUnless(unlessProperty); | |||
| test.setTodir(destDir); | |||
| Enumeration list = formatters.elements(); | |||
| while (list.hasMoreElements()) { | |||
| test.addFormatter((FormatterElement)list.nextElement()); | |||
| @@ -129,6 +135,7 @@ public final class BatchTest extends BaseTest { | |||
| } | |||
| throw new NoSuchElementException(); | |||
| } | |||
| public final String javaToClass(String fileName){ | |||
| return fileName.replace(java.io.File.separatorChar, '.'); | |||
| } | |||
| @@ -23,7 +23,7 @@ | |||
| * Alternately, this acknowlegement may appear in the software itself, | |||
| * if and wherever such third-party acknowlegements normally appear. | |||
| * | |||
| * 4. The names "The Jakarta Project", "Tomcat", and "Apache Software | |||
| * 4. The names "The Jakarta Project", "Ant", and "Apache Software | |||
| * Foundation" must not be used to endorse or promote products derived | |||
| * from this software without prior written permission. For written | |||
| * permission, please contact apache@apache.org. | |||
| @@ -84,6 +84,7 @@ import java.util.Vector; | |||
| * | |||
| * @author Thomas Haas | |||
| * @author <a href="mailto:stefan.bodewig@epost.de">Stefan Bodewig</a> | |||
| * @author <a href="mailto:sbailliez@imediation.com">Stephane Bailliez</a> | |||
| */ | |||
| public class JUnitTask extends Task { | |||
| @@ -204,8 +205,12 @@ public class JUnitTask extends Task { | |||
| continue; | |||
| } | |||
| if (test.getTodir() == null){ | |||
| test.setTodir(project.resolveFile(".")); | |||
| } | |||
| if (test.getOutfile() == null) { | |||
| test.setOutfile(project.resolveFile("TEST-" + test.getName())); | |||
| test.setOutfile( "TEST-" + test.getName() ); | |||
| } | |||
| int exitValue = JUnitTestRunner.ERRORS; | |||
| @@ -246,22 +251,12 @@ public class JUnitTask extends Task { | |||
| for (int i=0; i<formatters.size(); i++) { | |||
| FormatterElement fe = (FormatterElement) formatters.elementAt(i); | |||
| if (fe.getUseFile()) { | |||
| fe.setOutfile(project.resolveFile(test.getOutfile() | |||
| +fe.getExtension())); | |||
| } else { | |||
| fe.setOutput(new LogOutputStream(this, Project.MSG_INFO)); | |||
| } | |||
| setOutput(fe, test); | |||
| runner.addFormatter(fe.createFormatter()); | |||
| } | |||
| FormatterElement[] add = test.getFormatters(); | |||
| for (int i=0; i<add.length; i++) { | |||
| if (add[i].getUseFile()) { | |||
| add[i].setOutfile(project.resolveFile(test.getOutfile() | |||
| +add[i].getExtension())); | |||
| } else { | |||
| add[i].setOutput(new LogOutputStream(this, Project.MSG_INFO)); | |||
| } | |||
| setOutput(add[i], test); | |||
| runner.addFormatter(add[i].createFormatter()); | |||
| } | |||
| @@ -290,9 +285,10 @@ public class JUnitTask extends Task { | |||
| formatterArg.append(fe.getClassname()); | |||
| if (fe.getUseFile()) { | |||
| formatterArg.append(","); | |||
| formatterArg.append(project.resolveFile(test.getOutfile() | |||
| +fe.getExtension()) | |||
| .getAbsolutePath()); | |||
| File destFile = new File( test.getTodir(), | |||
| test.getOutfile() + fe.getExtension() ); | |||
| String filename = destFile.getAbsolutePath(); | |||
| formatterArg.append( project.resolveFile(filename) ); | |||
| } | |||
| cmd.createArgument().setValue(formatterArg.toString()); | |||
| formatterArg.setLength(0); | |||
| @@ -304,9 +300,10 @@ public class JUnitTask extends Task { | |||
| formatterArg.append(add[i].getClassname()); | |||
| if (add[i].getUseFile()) { | |||
| formatterArg.append(","); | |||
| formatterArg.append(project.resolveFile(test.getOutfile() | |||
| +add[i].getExtension()) | |||
| .getAbsolutePath()); | |||
| File destFile = new File( test.getTodir(), | |||
| test.getOutfile() + add[i].getExtension() ); | |||
| String filename = destFile.getAbsolutePath(); | |||
| formatterArg.append( project.resolveFile(filename) ); | |||
| } | |||
| cmd.createArgument().setValue(formatterArg.toString()); | |||
| formatterArg.setLength(0); | |||
| @@ -372,4 +369,15 @@ public class JUnitTask extends Task { | |||
| } | |||
| }; | |||
| } | |||
| protected void setOutput(FormatterElement fe, JUnitTest test) { | |||
| if (fe.getUseFile()) { | |||
| File destFile = new File( test.getTodir(), | |||
| test.getOutfile() + fe.getExtension() ); | |||
| String filename = destFile.getAbsolutePath(); | |||
| fe.setOutfile( project.resolveFile(filename) ); | |||
| } else { | |||
| fe.setOutput(new LogOutputStream(this, Project.MSG_INFO)); | |||
| } | |||
| } | |||
| } | |||
| @@ -23,7 +23,7 @@ | |||
| * Alternately, this acknowlegement may appear in the software itself, | |||
| * if and wherever such third-party acknowlegements normally appear. | |||
| * | |||
| * 4. The names "The Jakarta Project", "Tomcat", and "Apache Software | |||
| * 4. The names "The Jakarta Project", "Ant", and "Apache Software | |||
| * Foundation" must not be used to endorse or promote products derived | |||
| * from this software without prior written permission. For written | |||
| * permission, please contact apache@apache.org. | |||
| @@ -63,12 +63,17 @@ import java.util.Vector; | |||
| /** | |||
| * | |||
| * @author Thomas Haas | |||
| * @author <a href="mailto:stefan.bodewig@megabit.net">Stefan Bodewig</a> | |||
| * @author <a href="mailto:stefan.bodewig@epost.de">Stefan Bodewig</a>, | |||
| * @author <a href="mailto:sbailliez@imediation.com">Stephane Bailliez</a> | |||
| */ | |||
| public class JUnitTest extends BaseTest { | |||
| /** the name of the test case */ | |||
| private String name = null; | |||
| private File outfile = null; | |||
| /** the name of the result file */ | |||
| private String outfile = null; | |||
| private long runs, failures, errors; | |||
| private long runTime; | |||
| @@ -89,7 +94,7 @@ public class JUnitTest extends BaseTest { | |||
| name = value; | |||
| } | |||
| public void setOutfile(File value) { | |||
| public void setOutfile(String value) { | |||
| outfile = value; | |||
| } | |||
| @@ -97,11 +102,11 @@ public class JUnitTest extends BaseTest { | |||
| return name; | |||
| } | |||
| /** | |||
| * @return the name of the output file. | |||
| */ | |||
| public String getOutfile() { | |||
| if (outfile != null) { | |||
| return outfile.getAbsolutePath(); | |||
| } | |||
| return null; | |||
| return outfile; | |||
| } | |||
| public void setCounts(long runs, long failures, long errors) { | |||