- Cleaning git-svn-id: https://svn.apache.org/repos/asf/ant/core/trunk@270600 13f79535-47bb-0310-9956-ffa450edef68master
| @@ -68,7 +68,7 @@ import org.apache.tools.ant.types.EnumeratedAttribute; | |||
| * being the bottom filter. | |||
| * | |||
| * <pre> | |||
| * <!ELEMENT filter (type|classname)> | |||
| * <!ELEMENT filter> | |||
| * <!ATTLIST filter type (stack) required> | |||
| * <!ATTLIST filter classname CDATA required> | |||
| * </pre> | |||
| @@ -53,8 +53,6 @@ | |||
| */ | |||
| package org.apache.tools.ant.taskdefs.optional.junit; | |||
| import java.io.File; | |||
| import java.io.FileOutputStream; | |||
| import java.io.OutputStream; | |||
| import java.util.StringTokenizer; | |||
| import java.util.Vector; | |||
| @@ -79,42 +77,27 @@ import org.apache.tools.ant.types.EnumeratedAttribute; | |||
| * | |||
| * @author <a href="mailto:sbailliez@apache.org">Stephane Bailliez</a> | |||
| * | |||
| * @see JUnitTask, | |||
| * @see JUnitTask | |||
| * @see Formatter | |||
| */ | |||
| public class FormatterElement { | |||
| /** output stream for the formatter */ | |||
| private OutputStream out = new KeepAliveOutputStream(System.out); | |||
| private String classname; | |||
| /** | |||
| * @fixme we can remove this and use a specific attribute | |||
| * to denote a filepathname and stdout as a reserved word. | |||
| */ | |||
| private String extension; | |||
| /** are we using a file ? */ | |||
| private File outFile; | |||
| private boolean useFile = true; | |||
| /** formatter classname */ | |||
| private String classname; | |||
| /** the filters to apply to this formatter */ | |||
| private Vector filters = new Vector(); | |||
| /** | |||
| * <p> Quick way to use a standard formatter. | |||
| * | |||
| * <p> At the moment, there are three supported standard formatters. | |||
| * <ul> | |||
| * <li> The <code>xml</code> type uses a <code>XMLJUnitResultFormatter</code>. | |||
| * <li> The <code>brief</code> type uses a <code>BriefJUnitResultFormatter</code>. | |||
| * <li> The <code>plain</code> type (the default) uses a <code>PlainJUnitResultFormatter</code>. | |||
| * </ul> | |||
| * | |||
| * <p> Sets <code>classname</code> attribute - so you can't use that attribute if you use this one. | |||
| * set an existing type of formatter. | |||
| * @see TypeAttribute | |||
| * @see #setClassname(String) | |||
| */ | |||
| public void setType(TypeAttribute type) { | |||
| setClassname(type.getClassName()); | |||
| setExtension(type.getExtension()); | |||
| } | |||
| /** | |||
| @@ -126,21 +109,6 @@ public class FormatterElement { | |||
| this.classname = classname; | |||
| } | |||
| /** | |||
| * Get name of class to be used as the formatter. | |||
| */ | |||
| public String getClassname() { | |||
| return classname; | |||
| } | |||
| public void setExtension(String ext) { | |||
| this.extension = ext; | |||
| } | |||
| public String getExtension() { | |||
| return extension; | |||
| } | |||
| /** | |||
| * Setting a comma separated list of filters in the specified order. | |||
| * @see #addFilter(FilterAttribute) | |||
| @@ -164,36 +132,11 @@ public class FormatterElement { | |||
| filters.addElement(fe); | |||
| } | |||
| /** | |||
| * <p> Set the file which the formatte should log to. | |||
| * | |||
| * <p> Note that logging to file must be enabled . | |||
| */ | |||
| void setOutfile(File out) { | |||
| this.outFile = out; | |||
| } | |||
| /** | |||
| * <p> Set output stream for formatter to use. | |||
| * | |||
| * <p> Defaults to standard out. | |||
| */ | |||
| public void setOutput(OutputStream out) { | |||
| this.out = out; | |||
| } | |||
| /** | |||
| * Set whether the formatter should log to file. | |||
| */ | |||
| public void setUseFile(boolean useFile) { | |||
| this.useFile = useFile; | |||
| } | |||
| /** | |||
| * Get whether the formatter should log to file. | |||
| */ | |||
| boolean getUseFile() { | |||
| return useFile; | |||
| public void setOutput(OutputAttribute output) { | |||
| this.out = output.getOutputStream(); | |||
| } | |||
| /** | |||
| @@ -207,14 +150,9 @@ public class FormatterElement { | |||
| try { | |||
| Class clazz = Class.forName(classname); | |||
| if (!Formatter.class.isAssignableFrom(clazz)) { | |||
| throw new BuildException(clazz + " is not a JUnitResultFormatter"); | |||
| throw new BuildException(clazz + " is not a Formatter"); | |||
| } | |||
| f = (Formatter) clazz.newInstance(); | |||
| // create the stream if necessary | |||
| if (useFile && outFile != null) { | |||
| out = new FileOutputStream(outFile); | |||
| } | |||
| } catch (BuildException e) { | |||
| throw e; | |||
| } catch (Exception e) { | |||
| @@ -234,12 +172,11 @@ public class FormatterElement { | |||
| /** | |||
| * <p> Enumerated attribute with the values "plain", "xml" and "brief". | |||
| * <p> Use to enumerate options for <code>type</code> attribute. | |||
| * <p> Use to enumerate options for <tt>type</tt> attribute. | |||
| */ | |||
| public static class TypeAttribute extends EnumeratedAttribute { | |||
| private final static String[] VALUES = {"plain", "xml", "brief"}; | |||
| private final static String[] CLASSNAMES = {"xxx", XMLFormatter.class.getName(), BriefFormatter.class.getName()}; | |||
| private final static String[] EXTENSIONS = {".txt", ".xml", ".txt"}; | |||
| public String[] getValues() { | |||
| return VALUES; | |||
| @@ -248,10 +185,6 @@ public class FormatterElement { | |||
| public String getClassName() { | |||
| return CLASSNAMES[index]; | |||
| } | |||
| public String getExtension() { | |||
| return EXTENSIONS[index]; | |||
| } | |||
| } | |||
| } | |||
| @@ -65,7 +65,7 @@ import junit.framework.TestSuite; | |||
| */ | |||
| public final class JUnitHelper { | |||
| private static final String SUITE_METHODNAME = "suite"; | |||
| private final static String SUITE_METHODNAME = "suite"; | |||
| /** | |||
| * This method parse the output of the method <tt>toString()</tt> | |||
| @@ -0,0 +1,112 @@ | |||
| /* | |||
| * The Apache Software License, Version 1.1 | |||
| * | |||
| * Copyright (c) 2001 The Apache Software Foundation. All rights | |||
| * reserved. | |||
| * | |||
| * Redistribution and use in source and binary forms, with or without | |||
| * modification, are permitted provided that the following conditions | |||
| * are met: | |||
| * | |||
| * 1. Redistributions of source code must retain the above copyright | |||
| * notice, this list of conditions and the following disclaimer. | |||
| * | |||
| * 2. Redistributions in binary form must reproduce the above copyright | |||
| * notice, this list of conditions and the following disclaimer in | |||
| * the documentation and/or other materials provided with the | |||
| * distribution. | |||
| * | |||
| * 3. The end-user documentation included with the redistribution, if | |||
| * any, must include the following acknowlegement: | |||
| * "This product includes software developed by the | |||
| * Apache Software Foundation (http://www.apache.org/)." | |||
| * Alternately, this acknowlegement may appear in the software itself, | |||
| * if and wherever such third-party acknowlegements normally appear. | |||
| * | |||
| * 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. | |||
| * | |||
| * 5. Products derived from this software may not be called "Apache" | |||
| * nor may "Apache" appear in their names without prior written | |||
| * permission of the Apache Group. | |||
| * | |||
| * THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESSED OR IMPLIED | |||
| * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES | |||
| * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE | |||
| * DISCLAIMED. IN NO EVENT SHALL THE APACHE SOFTWARE FOUNDATION OR | |||
| * ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, | |||
| * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT | |||
| * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF | |||
| * USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND | |||
| * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, | |||
| * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT | |||
| * OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF | |||
| * SUCH DAMAGE. | |||
| * ==================================================================== | |||
| * | |||
| * This software consists of voluntary contributions made by many | |||
| * individuals on behalf of the Apache Software Foundation. For more | |||
| * information on the Apache Software Foundation, please see | |||
| * <http://www.apache.org/>. | |||
| */ | |||
| package org.apache.tools.ant.taskdefs.optional.junit; | |||
| import java.io.File; | |||
| import java.io.FileOutputStream; | |||
| import java.io.IOException; | |||
| import java.io.OutputStream; | |||
| import org.apache.tools.ant.BuildException; | |||
| import org.apache.tools.ant.ProjectComponent; | |||
| import org.apache.tools.ant.taskdefs.optional.junit.formatter.KeepAliveOutputStream; | |||
| /** | |||
| * Attempt to create an output specific attribute. | |||
| * <p> | |||
| * The possible output values are 'stdout' and 'stderr', otherwise | |||
| * it is assumed that the value represent a file. | |||
| * </p> | |||
| * Note that stdout and stderr are wrapped by a <tt>KeepAliveOutputStream</tt> | |||
| * so that the stream cannot be closed. | |||
| * | |||
| * @author <a href="mailto:sbailliez@apache.org">Stephane Bailliez</a> | |||
| * @see KeepAliveOutputStream | |||
| */ | |||
| public class OutputAttribute extends ProjectComponent { | |||
| /** keyword to represent stdout output */ | |||
| public final static String STDOUT = "stdout"; | |||
| /** keyword to represent stderr output */ | |||
| public final static String STDERR = "stderr"; | |||
| /** the selected value for output, either stdout,stderr or filepath */ | |||
| protected String value; | |||
| /** | |||
| * Create a new output attribute from a value. | |||
| */ | |||
| public OutputAttribute(String value) { | |||
| this.value = value; | |||
| } | |||
| /** | |||
| * @return the outputstream corresponding to the selected attribute. | |||
| */ | |||
| public OutputStream getOutputStream() { | |||
| if (STDOUT.equals(value)) { | |||
| return new KeepAliveOutputStream(System.out); | |||
| } else if (STDERR.equals(value)) { | |||
| return new KeepAliveOutputStream(System.err); | |||
| } | |||
| File f = project.resolveFile(value); | |||
| try { | |||
| return new FileOutputStream(f); | |||
| } catch (IOException e) { | |||
| throw new BuildException(e); | |||
| } | |||
| } | |||
| } | |||