diff --git a/build.xml b/build.xml
index 13c06a18d..2f13fe9ee 100644
--- a/build.xml
+++ b/build.xml
@@ -724,6 +724,7 @@
+
diff --git a/src/testcases/org/apache/tools/ant/BuildFileTest.java b/src/testcases/org/apache/tools/ant/BuildFileTest.java
new file mode 100644
index 000000000..27cebd4cc
--- /dev/null
+++ b/src/testcases/org/apache/tools/ant/BuildFileTest.java
@@ -0,0 +1,278 @@
+/*
+ * 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
+ * .
+ */
+
+package org.apache.tools.ant;
+
+import junit.framework.*;
+import org.apache.tools.ant.*;
+import java.io.*;
+
+/**
+ * A BuildFileTest is a TestCase which executes targets from an Ant buildfile
+ * for testing.
+ *
+ * This class provides a number of utility methods for particular build file
+ * tests which extend this class.
+ *
+ * @author Nico Seessle
+ * @author Conor MacNeill
+ */
+public abstract class BuildFileTest extends TestCase {
+
+ protected Project project;
+
+ private StringBuffer logBuffer;
+ private StringBuffer fullLogBuffer;
+ private StringBuffer outBuffer;
+ private StringBuffer errBuffer;
+ private BuildException buildException;
+
+ public BuildFileTest(String name) {
+ super(name);
+ }
+
+ protected String getLog() {
+ return logBuffer.toString();
+ }
+
+ protected String getFullLog() {
+ return fullLogBuffer.toString();
+ }
+
+
+
+ protected void expectBuildException(String taskname, String cause) {
+ expectSpecificBuildException(taskname, cause, null);
+ }
+
+ protected void expectOutput(String taskname, String output) {
+ executeTarget(taskname);
+ String realOutput = getOutput();
+ assertEquals(output, realOutput);
+ }
+
+ protected void expectOutputAndError(String taskname, String output, String error) {
+ executeTarget(taskname);
+ String realOutput = getOutput();
+ assertEquals(output, realOutput);
+ String realError = getError();
+ assertEquals(error, realError);
+ }
+
+ protected void expectLog(String taskname, String log) {
+ executeTarget(taskname);
+ String realLog = getLog();
+ assertEquals(log, realLog);
+ }
+
+
+ protected String getOutput() {
+ return cleanBuffer(outBuffer);
+ }
+
+ protected String getError() {
+ return cleanBuffer(errBuffer);
+ }
+
+ private String cleanBuffer(StringBuffer buffer) {
+ StringBuffer cleanedBuffer = new StringBuffer();
+ boolean cr = false;
+ for (int i = 0; i < buffer.length(); i++) {
+ char ch = buffer.charAt(i);
+ if (ch == '\r') {
+ cr = true;
+ continue;
+ }
+
+ if (!cr) {
+ cleanedBuffer.append(ch);
+ } else {
+ if (ch == '\n') {
+ cleanedBuffer.append(ch);
+ } else {
+ cleanedBuffer.append('\r').append(ch);
+ }
+ }
+ }
+ return cleanedBuffer.toString();
+ }
+
+ protected void configureProject(String filename) {
+ logBuffer = new StringBuffer();
+ fullLogBuffer = new StringBuffer();
+ project = new Project();
+ project.init();
+ project.setUserProperty( "ant.file" , new File(filename).getAbsolutePath() );
+ project.addBuildListener(new AntTestListener());
+ ProjectHelper.configureProject(project, new File(filename));
+ }
+
+ protected void executeTarget(String targetName) {
+ PrintStream sysOut = System.out;
+ PrintStream sysErr = System.err;
+ try {
+ sysOut.flush();
+ sysErr.flush();
+ outBuffer = new StringBuffer();
+ PrintStream out = new PrintStream(new AntOutputStream());
+ System.setOut(out);
+ errBuffer = new StringBuffer();
+ PrintStream err = new PrintStream(new AntOutputStream());
+ System.setErr(err);
+ logBuffer = new StringBuffer();
+ fullLogBuffer = new StringBuffer();
+ buildException = null;
+ project.executeTarget(targetName);
+ } finally {
+ System.setOut(sysOut);
+ System.setErr(sysErr);
+ }
+
+ }
+
+ protected File getProjectDir() {
+ return project.getBaseDir();
+ }
+
+ protected void expectSpecificBuildException(String taskname, String cause, String msg) {
+ try {
+ executeTarget(taskname);
+ } catch (org.apache.tools.ant.BuildException ex) {
+ if ((null != msg) && (ex.getMessage() != msg)) {
+ fail("Should throw BuildException because '" + cause + "' with message '" + msg + "' (received message '" + ex.getMessage() + "' instead)");
+ }
+ return;
+ }
+ fail("Should throw BuildException because: " + cause);
+ }
+ private class AntOutputStream extends java.io.OutputStream {
+ public void write(int b) {
+ outBuffer.append((char)b);
+ }
+ }
+
+ private class AntTestListener implements BuildListener {
+ /**
+ * Fired before any targets are started.
+ */
+ public void buildStarted(BuildEvent event) {
+ }
+
+ /**
+ * Fired after the last target has finished. This event
+ * will still be thrown if an error occured during the build.
+ *
+ * @see BuildEvent#getException()
+ */
+ public void buildFinished(BuildEvent event) {
+ }
+
+ /**
+ * Fired when a target is started.
+ *
+ * @see BuildEvent#getTarget()
+ */
+ public void targetStarted(BuildEvent event) {
+ //System.out.println("targetStarted " + event.getTarget().getName());
+ }
+
+ /**
+ * Fired when a target has finished. This event will
+ * still be thrown if an error occured during the build.
+ *
+ * @see BuildEvent#getException()
+ */
+ public void targetFinished(BuildEvent event) {
+ //System.out.println("targetFinished " + event.getTarget().getName());
+ }
+
+ /**
+ * Fired when a task is started.
+ *
+ * @see BuildEvent#getTask()
+ */
+ public void taskStarted(BuildEvent event) {
+ //System.out.println("taskStarted " + event.getTask().getTaskName());
+ }
+
+ /**
+ * Fired when a task has finished. This event will still
+ * be throw if an error occured during the build.
+ *
+ * @see BuildEvent#getException()
+ */
+ public void taskFinished(BuildEvent event) {
+ //System.out.println("taskFinished " + event.getTask().getTaskName());
+ }
+
+ /**
+ * Fired whenever a message is logged.
+ *
+ * @see BuildEvent#getMessage()
+ * @see BuildEvent#getPriority()
+ */
+ public void messageLogged(BuildEvent event) {
+ if (event.getPriority() == Project.MSG_INFO ||
+ event.getPriority() == Project.MSG_WARN ||
+ event.getPriority() == Project.MSG_ERR)
+ {
+ logBuffer.append(event.getMessage());
+ }
+ fullLogBuffer.append(event.getMessage());
+
+ }
+ }
+
+
+}
diff --git a/src/testcases/org/apache/tools/ant/taskdefs/TaskdefsTest.java b/src/testcases/org/apache/tools/ant/taskdefs/TaskdefsTest.java
index dede67ae6..0b7ec54a4 100644
--- a/src/testcases/org/apache/tools/ant/taskdefs/TaskdefsTest.java
+++ b/src/testcases/org/apache/tools/ant/taskdefs/TaskdefsTest.java
@@ -55,217 +55,15 @@
package org.apache.tools.ant.taskdefs;
import junit.framework.*;
-import org.apache.tools.ant.*;
import java.io.*;
+import org.apache.tools.ant.BuildFileTest;
/**
* @author Nico Seessle
*/
-public abstract class TaskdefsTest extends TestCase {
-
- protected Project project;
-
- private StringBuffer logBuffer;
- private StringBuffer fullLogBuffer;
- private StringBuffer outBuffer;
- private StringBuffer errBuffer;
- private BuildException buildException;
+public abstract class TaskdefsTest extends BuildFileTest {
public TaskdefsTest(String name) {
super(name);
}
-
- protected String getLog() {
- return logBuffer.toString();
- }
-
- protected String getFullLog() {
- return fullLogBuffer.toString();
- }
-
-
-
- protected void expectBuildException(String taskname, String cause) {
- expectSpecificBuildException(taskname, cause, null);
- }
-
- protected void expectOutput(String taskname, String output) {
- executeTarget(taskname);
- String realOutput = getOutput();
- assertEquals(output, realOutput);
- }
-
- protected void expectOutputAndError(String taskname, String output, String error) {
- executeTarget(taskname);
- String realOutput = getOutput();
- assertEquals(output, realOutput);
- String realError = getError();
- assertEquals(error, realError);
- }
-
- protected void expectLog(String taskname, String log) {
- executeTarget(taskname);
- String realLog = getLog();
- assertEquals(log, realLog);
- }
-
-
- protected String getOutput() {
- return cleanBuffer(outBuffer);
- }
-
- protected String getError() {
- return cleanBuffer(errBuffer);
- }
-
- private String cleanBuffer(StringBuffer buffer) {
- StringBuffer cleanedBuffer = new StringBuffer();
- boolean cr = false;
- for (int i = 0; i < buffer.length(); i++) {
- char ch = buffer.charAt(i);
- if (ch == '\r') {
- cr = true;
- continue;
- }
-
- if (!cr) {
- cleanedBuffer.append(ch);
- } else {
- if (ch == '\n') {
- cleanedBuffer.append(ch);
- } else {
- cleanedBuffer.append('\r').append(ch);
- }
- }
- }
- return cleanedBuffer.toString();
- }
-
- protected void configureProject(String filename) {
- logBuffer = new StringBuffer();
- fullLogBuffer = new StringBuffer();
- project = new Project();
- project.init();
- project.setUserProperty( "ant.file" , new File(filename).getAbsolutePath() );
- project.addBuildListener(new AntTestListener());
- ProjectHelper.configureProject(project, new File(filename));
- }
-
- protected void executeTarget(String targetName) {
- PrintStream sysOut = System.out;
- PrintStream sysErr = System.err;
- try {
- sysOut.flush();
- sysErr.flush();
- outBuffer = new StringBuffer();
- PrintStream out = new PrintStream(new AntOutputStream());
- System.setOut(out);
- errBuffer = new StringBuffer();
- PrintStream err = new PrintStream(new AntOutputStream());
- System.setErr(err);
- logBuffer = new StringBuffer();
- fullLogBuffer = new StringBuffer();
- buildException = null;
- project.executeTarget(targetName);
- } finally {
- System.setOut(sysOut);
- System.setErr(sysErr);
- }
-
- }
-
- protected File getProjectDir() {
- return project.getBaseDir();
- }
-
- protected void expectSpecificBuildException(String taskname, String cause, String msg) {
- try {
- executeTarget(taskname);
- } catch (org.apache.tools.ant.BuildException ex) {
- if ((null != msg) && (ex.getMessage() != msg)) {
- fail("Should throw BuildException because '" + cause + "' with message '" + msg + "' (received message '" + ex.getMessage() + "' instead)");
- }
- return;
- }
- fail("Should throw BuildException because: " + cause);
- }
- private class AntOutputStream extends java.io.OutputStream {
- public void write(int b) {
- outBuffer.append((char)b);
- }
- }
-
- private class AntTestListener implements BuildListener {
- /**
- * Fired before any targets are started.
- */
- public void buildStarted(BuildEvent event) {
- }
-
- /**
- * Fired after the last target has finished. This event
- * will still be thrown if an error occured during the build.
- *
- * @see BuildEvent#getException()
- */
- public void buildFinished(BuildEvent event) {
- }
-
- /**
- * Fired when a target is started.
- *
- * @see BuildEvent#getTarget()
- */
- public void targetStarted(BuildEvent event) {
- //System.out.println("targetStarted " + event.getTarget().getName());
- }
-
- /**
- * Fired when a target has finished. This event will
- * still be thrown if an error occured during the build.
- *
- * @see BuildEvent#getException()
- */
- public void targetFinished(BuildEvent event) {
- //System.out.println("targetFinished " + event.getTarget().getName());
- }
-
- /**
- * Fired when a task is started.
- *
- * @see BuildEvent#getTask()
- */
- public void taskStarted(BuildEvent event) {
- //System.out.println("taskStarted " + event.getTask().getTaskName());
- }
-
- /**
- * Fired when a task has finished. This event will still
- * be throw if an error occured during the build.
- *
- * @see BuildEvent#getException()
- */
- public void taskFinished(BuildEvent event) {
- //System.out.println("taskFinished " + event.getTask().getTaskName());
- }
-
- /**
- * Fired whenever a message is logged.
- *
- * @see BuildEvent#getMessage()
- * @see BuildEvent#getPriority()
- */
- public void messageLogged(BuildEvent event) {
- if (event.getPriority() == Project.MSG_INFO ||
- event.getPriority() == Project.MSG_WARN ||
- event.getPriority() == Project.MSG_ERR)
- {
- logBuffer.append(event.getMessage());
- }
- fullLogBuffer.append(event.getMessage());
-
- }
- }
-
-
}
diff --git a/src/testcases/org/apache/tools/ant/types/DescriptionTest.java b/src/testcases/org/apache/tools/ant/types/DescriptionTest.java
index a0ffe8bd4..b04205c95 100644
--- a/src/testcases/org/apache/tools/ant/types/DescriptionTest.java
+++ b/src/testcases/org/apache/tools/ant/types/DescriptionTest.java
@@ -56,7 +56,7 @@ package org.apache.tools.ant.types;
import org.apache.tools.ant.BuildException;
import org.apache.tools.ant.Project;
-import org.apache.tools.ant.taskdefs.TaskdefsTest;
+import org.apache.tools.ant.BuildFileTest;
import junit.framework.TestCase;
import junit.framework.AssertionFailedError;
@@ -68,7 +68,7 @@ import java.io.*;
*
* @author Conor MacNeill
*/
-public class DescriptionTest extends TaskdefsTest {
+public class DescriptionTest extends BuildFileTest {
public DescriptionTest(String name) {
super(name);
diff --git a/src/testcases/org/apache/tools/ant/types/FilterSetTest.java b/src/testcases/org/apache/tools/ant/types/FilterSetTest.java
index 9982c31ff..84fc7cb82 100644
--- a/src/testcases/org/apache/tools/ant/types/FilterSetTest.java
+++ b/src/testcases/org/apache/tools/ant/types/FilterSetTest.java
@@ -56,7 +56,7 @@ package org.apache.tools.ant.types;
import org.apache.tools.ant.BuildException;
import org.apache.tools.ant.Project;
-import org.apache.tools.ant.taskdefs.TaskdefsTest;
+import org.apache.tools.ant.BuildFileTest;
import junit.framework.TestCase;
import junit.framework.AssertionFailedError;
@@ -68,7 +68,7 @@ import java.io.*;
*
* @author Conor MacNeill
*/
-public class FilterSetTest extends TaskdefsTest {
+public class FilterSetTest extends BuildFileTest {
static private final int BUF_SIZE = 32768;