mbenson 2004/02/16 11:39:13
Modified: src/etc/testcases/taskdefs/exec exec.xml
src/testcases/org/apache/tools/ant/taskdefs
ExecTaskTest.java
Added: src/etc/testcases/taskdefs/exec apply.xml parrot.sh
src/testcases/org/apache/tools/ant/taskdefs
ExecuteOnTest.java
Log:
Add several I/O related test cases to <exec> and <apply>.
PR: 26663
Revision Changes Path
1.3 +81 -3 ant/src/etc/testcases/taskdefs/exec/exec.xml
Index: exec.xml
===================================================================
RCS file: /home/cvs/ant/src/etc/testcases/taskdefs/exec/exec.xml,v
retrieving revision 1.2
retrieving revision 1.3
diff -u -r1.2 -r1.3
--- exec.xml 4 Aug 2003 22:23:57 -0000 1.2
+++ exec.xml 16 Feb 2004 19:39:13 -0000 1.3
@@ -3,7 +3,7 @@
<!-- this property can be overriden programatically in the Java test
case -->
<property name="timeToWait" value="10"/>
<!-- this property can be overriden programatically in the Java test
case -->
- <property name="logFile" value="/tmp/spawn.log"/>
+ <property name="logFile" value="${java.io.tmpdir}/spawn.log"/>
<property environment="env"/>
<!-- UNIX -->
<available file="sh" filepath="${env.PATH}"
property="sh.executable"/>
@@ -15,7 +15,18 @@
<isset property="sh.exe.executable"/>
</or>
</condition>
+ <!-- UNIX -->
+ <available file="wc" filepath="${env.PATH}"
property="wc.executable"/>
+ <!-- CYGWIN -->
+ <available file="wc.exe" filepath="${env.PATH}"
property="wc.exe.executable"/>
+ <condition property="wc.can.run">
+ <or>
+ <isset property="wc.executable"/>
+ <isset property="wc.exe.executable"/>
+ </or>
+ </condition>
</target>
+
<target name="spawn" depends="init" if="test.can.run">
<exec executable="sh" spawn="true">
<arg value="spawn.sh"/>
@@ -23,7 +34,74 @@
<arg value="${logFile}" />
</exec>
</target>
+
+ <target name="no-redirect" depends="init" if="test.can.run">
+ <exec executable="sh">
+ <arg value="parrot.sh"/>
+ <arg value="${ant.file}" />
+ </exec>
+ </target>
+
+ <target name="redirect1" depends="init" if="test.can.run">
+ <exec executable="sh" output="redirect.out">
+ <arg value="parrot.sh"/>
+ <arg value="${ant.file}" />
+ </exec>
+ </target>
+
+ <target name="redirect2" depends="init" if="test.can.run">
+ <exec executable="sh" output="redirect.out" error="redirect.err">
+ <arg value="parrot.sh"/>
+ <arg value="${ant.file}" />
+ </exec>
+ </target>
+
+ <target name="redirect3" depends="init" if="test.can.run">
+ <exec executable="sh" logerror="true"
+ output="redirect.out" outputproperty="redirect.out">
+ <arg value="parrot.sh"/>
+ <arg value="${ant.file}" />
+ </exec>
+ </target>
+
+ <target name="redirect4" depends="init" if="test.can.run">
+ <exec executable="sh"
+ error="redirect.err" errorproperty="redirect.err"
+ output="redirect.out" outputproperty="redirect.out">
+ <arg value="parrot.sh"/>
+ <arg value="${ant.file}" />
+ </exec>
+ </target>
+
+ <target name="redirect5" depends="init" if="wc.can.run">
+ <exec executable="wc" inputstring="x y z"
+ error="redirect.err" errorproperty="redirect.err"
+ output="redirect.out" outputproperty="redirect.out">
+ <arg value="-w"/>
+ </exec>
+ </target>
+
+ <target name="redirect6" depends="init" if="wc.can.run">
+ <echo file="redirect.in">x y z</echo>
+ <exec executable="wc" input="redirect.in"
+ error="redirect.err" errorproperty="redirect.err"
+ output="redirect.out" outputproperty="redirect.out">
+ <arg value="-w"/>
+ </exec>
+ </target>
+
+ <target name="redirect7" depends="init" if="wc.can.run">
+ <exec executable="wc" inputstring="x y z"
+ error="redirect.err"
+ output="redirect.out" outputproperty="redirect.out">
+ <arg value="-w"/>
+ </exec>
+ </target>
+
<target name="cleanup">
- <delete file="${logFile}"/>
+ <delete>
+ <fileset file="${logFile}" />
+ <fileset dir="${basedir}" includes="redirect.*" />
+ </delete>
</target>
-</project>
\ No newline at end of file
+</project>
1.1 ant/src/etc/testcases/taskdefs/exec/apply.xml
Index: apply.xml
===================================================================
<project name="apply-test" basedir=".">
<target name="init">
<property environment="env"/>
<!-- UNIX -->
<available file="sh" filepath="${env.PATH}" property="sh.executable"/>
<!-- CYGWIN -->
<available file="sh.exe" filepath="${env.PATH}"
property="sh.exe.executable"/>
<condition property="test.can.run">
<or>
<isset property="sh.executable"/>
<isset property="sh.exe.executable"/>
</or>
</condition>
<!-- UNIX -->
<available file="wc" filepath="${env.PATH}" property="wc.executable"/>
<!-- CYGWIN -->
<available file="wc.exe" filepath="${env.PATH}"
property="wc.exe.executable"/>
<condition property="wc.can.run">
<or>
<isset property="wc.executable"/>
<isset property="wc.exe.executable"/>
</or>
</condition>
<!-- UNIX -->
<available file="sed" filepath="${env.PATH}"
property="sed.executable"/>
<!-- CYGWIN -->
<available file="sed.exe" filepath="${env.PATH}"
property="sed.exe.executable"/>
<condition property="sed.can.run">
<or>
<isset property="sed.executable"/>
<isset property="sed.exe.executable"/>
</or>
</condition>
</target>
<target name="xyz">
<echo file="x">s/x/blah/g${line.separator}</echo>
<echo file="y">s/y/blah/g${line.separator}</echo>
<echo file="z">s/z/blah/g${line.separator}</echo>
<fileset id="xyz" dir="${basedir}" includes="x,y,z" />
</target>
<target name="no-redirect" depends="init,xyz" if="test.can.run">
<apply executable="sh">
<arg value="parrot.sh"/>
<fileset refid="xyz" />
</apply>
</target>
<target name="redirect1" depends="init,xyz" if="test.can.run">
<apply executable="sh" output="redirect.out" append="true">
<arg value="parrot.sh"/>
<fileset refid="xyz" />
</apply>
</target>
<target name="redirect2" depends="init,xyz" if="test.can.run">
<apply executable="sh" output="redirect.out"
error="redirect.err" append="true">
<arg value="parrot.sh"/>
<fileset refid="xyz" />
</apply>
</target>
<target name="redirect3" depends="init,xyz" if="test.can.run">
<apply executable="sh" logerror="true" append="true"
output="redirect.out" outputproperty="redirect.out">
<arg value="parrot.sh"/>
<fileset refid="xyz" />
</apply>
</target>
<target name="redirect4" depends="init,xyz" if="test.can.run">
<apply executable="sh" append="true"
error="redirect.err" errorproperty="redirect.err"
output="redirect.out" outputproperty="redirect.out">
<arg value="parrot.sh"/>
<fileset refid="xyz" />
</apply>
</target>
<target name="redirect5" depends="init,xyz" if="sed.can.run">
<apply executable="sed" inputstring="x y z${line.separator}"
append="true"
error="redirect.err" errorproperty="redirect.err"
output="redirect.out" outputproperty="redirect.out">
<arg value="-f"/>
<fileset refid="xyz" />
</apply>
</target>
<target name="redirect6" depends="init,xyz" if="sed.can.run">
<echo file="redirect.in">x y z${line.separator}</echo>
<apply executable="sed" input="redirect.in" append="true"
error="redirect.err" errorproperty="redirect.err"
output="redirect.out" outputproperty="redirect.out">
<arg value="-f"/>
<fileset refid="xyz" />
</apply>
</target>
<target name="redirect7" depends="init,xyz" if="sed.can.run">
<apply executable="sed" inputstring="x y z${line.separator}"
error="redirect.err" output="redirect.out"
outputproperty="redirect.out">
<arg value="-f"/>
<fileset refid="xyz" />
</apply>
</target>
<target name="redirect7b" depends="redirect7">
<echo>redirect.out=${redirect.out}</echo>
</target>
<target name="cleanup">
<delete>
<fileset dir="${basedir}" includes="redirect.*" />
<fileset refid="xyz" />
</delete>
</target>
</project>
1.1 ant/src/etc/testcases/taskdefs/exec/parrot.sh
Index: parrot.sh
===================================================================
# Copyright (c) 2004 The Apache Software Foundation. All rights reserved.
for arg in $@ ; do
echo $arg out
sleep 1
echo $arg err>&2
done
1.11 +125 -3
ant/src/testcases/org/apache/tools/ant/taskdefs/ExecTaskTest.java
Index: ExecTaskTest.java
===================================================================
RCS file:
/home/cvs/ant/src/testcases/org/apache/tools/ant/taskdefs/ExecTaskTest.java,v
retrieving revision 1.10
retrieving revision 1.11
diff -u -r1.10 -r1.11
--- ExecTaskTest.java 9 Feb 2004 21:05:41 -0000 1.10
+++ ExecTaskTest.java 16 Feb 2004 19:39:13 -0000 1.11
@@ -1,5 +1,5 @@
/*
- * Copyright 2003-2004 The Apache Software Foundation
+ * Copyright 2003-2004 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.
@@ -21,13 +21,16 @@
import org.apache.tools.ant.util.FileUtils;
import java.io.File;
+import java.io.FileReader;
+import java.io.IOException;
import java.io.OutputStream;
import java.util.GregorianCalendar;
-import junit.framework.Assert;
+import junit.framework.ComparisonFailure;
/**
* @author <a href="[EMAIL PROTECTED]">Antoine Levy-Lambert</a>
+ * @author Matt Benson
*/
public class ExecTaskTest extends BuildFileTest {
private static final String BUILD_PATH =
"src/etc/testcases/taskdefs/exec/";
@@ -49,9 +52,128 @@
}
public void tearDown() {
- if (logFile != null) {
+ executeTarget("cleanup");
+ if (logFile != null && logFile.exists()) {
logFile.delete();
}
+ }
+
+ public void testNoRedirect() {
+ expectLog("no-redirect", getProject().getProperty("ant.file") + "
out"
+ + getProject().getProperty("ant.file") + " err");
+ }
+
+ public void testRedirect1() {
+ executeTarget("redirect1");
+ String expectedOut = getProject().getProperty("ant.file") + " out\n"
+ + getProject().getProperty("ant.file") + " err\n";
+
+ String actualOut = null;
+ try {
+ actualOut = FileUtils.newFileUtils().readFully(new FileReader(
+ getProject().resolveFile("redirect.out")));
+ } catch (IOException eyeOhEx) {
+ }
+ assertEquals("unexpected output", expectedOut, actualOut);
+ }
+
+ public void testRedirect2() {
+ executeTarget("redirect2");
+ String expectedOut = getProject().getProperty("ant.file") + " out\n";
+ String expectedErr = getProject().getProperty("ant.file") + " err\n";
+
+ String actualOut = null;
+ String actualErr = null;
+ try {
+ actualOut = FileUtils.newFileUtils().readFully(new FileReader(
+ getProject().resolveFile("redirect.out")));
+ actualErr = FileUtils.newFileUtils().readFully(new FileReader(
+ getProject().resolveFile("redirect.err")));
+ } catch (IOException eyeOhEx) {
+ }
+ assertEquals("unexpected output", expectedOut, actualOut);
+ assertEquals("unexpected error output", expectedErr, actualErr);
+ }
+
+ public void testRedirect3() {
+ expectLog("redirect3", getProject().getProperty("ant.file") + "
err");
+ String expectedOut = getProject().getProperty("ant.file") + " out\n";
+
+ String actualOut = null;
+ try {
+ actualOut = FileUtils.newFileUtils().readFully(new FileReader(
+ getProject().resolveFile("redirect.out")));
+ } catch (IOException eyeOhEx) {
+ }
+ assertEquals("unexpected output", expectedOut, actualOut);
+ assertPropertyEquals("redirect.out", expectedOut.trim());
+ }
+
+ public void testRedirect4() {
+ executeTarget("redirect4");
+ String expectedOut = getProject().getProperty("ant.file") + " out\n";
+ String expectedErr = getProject().getProperty("ant.file") + " err\n";
+
+ String actualOut = null;
+ String actualErr = null;
+ try {
+ actualOut = FileUtils.newFileUtils().readFully(new FileReader(
+ getProject().resolveFile("redirect.out")));
+ actualErr = FileUtils.newFileUtils().readFully(new FileReader(
+ getProject().resolveFile("redirect.err")));
+ } catch (IOException eyeOhEx) {
+ }
+ assertEquals("unexpected output", expectedOut, actualOut);
+ assertPropertyEquals("redirect.out", expectedOut.trim());
+ assertEquals("unexpected error output", expectedErr, actualErr);
+ assertPropertyEquals("redirect.err", expectedErr.trim());
+ }
+
+ public void testRedirect5() {
+ testRedirect5or6("redirect5");
+ }
+
+ public void testRedirect6() {
+ testRedirect5or6("redirect6");
+ }
+
+ public void testRedirect5or6(String target) {
+ executeTarget(target);
+
+ String expectedOut = getProject().getProperty("ant.file") + " out\n";
+
+ String actualOut = null;
+ String actualErr = null;
+ try {
+ actualOut = FileUtils.newFileUtils().readFully(new FileReader(
+ getProject().resolveFile("redirect.out")));
+ actualErr = FileUtils.newFileUtils().readFully(new FileReader(
+ getProject().resolveFile("redirect.err")));
+ } catch (IOException eyeOhEx) {
+ }
+ assertEquals("unexpected output", "3", actualOut.trim());
+ assertEquals(getProject().getProperty("redirect.out").trim(), "3");
+ assertEquals("unexpected error output", null, actualErr);
+ assertPropertyEquals("redirect.err", "");
+ }
+
+ public void testRedirect7() {
+ executeTarget("redirect7");
+
+ String expectedOut = getProject().getProperty("ant.file") + " out\n";
+
+ String actualOut = null;
+ String actualErr = null;
+ try {
+ actualOut = FileUtils.newFileUtils().readFully(new FileReader(
+ getProject().resolveFile("redirect.out")));
+ actualErr = FileUtils.newFileUtils().readFully(new FileReader(
+ getProject().resolveFile("redirect.err")));
+ } catch (IOException eyeOhEx) {
+ }
+ assertEquals("unexpected output", "3", actualOut.trim());
+ assertEquals(getProject().getProperty("redirect.out").trim(), "3");
+ assertEquals("unexpected error output", null, actualErr);
}
public void testspawn() {
1.1
ant/src/testcases/org/apache/tools/ant/taskdefs/ExecuteOnTest.java
Index: ExecuteOnTest.java
===================================================================
/*
* Copyright 2004 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.tools.ant.taskdefs;
import org.apache.tools.ant.*;
import org.apache.tools.ant.util.FileUtils;
import java.io.File;
import java.io.FileReader;
import java.io.IOException;
import java.io.OutputStream;
import java.util.GregorianCalendar;
import junit.framework.ComparisonFailure;
/**
* @author Matt Benson
*/
public class ExecuteOnTest extends BuildFileTest {
private static final String BUILD_PATH =
"src/etc/testcases/taskdefs/exec/";
private static final String BUILD_FILE = BUILD_PATH + "apply.xml";
// private final int TIME_TO_WAIT = 1;
/** maximum time allowed for the build in milliseconds */
// private final int MAX_BUILD_TIME = 4000;
// private final int SECURITY_MARGIN = 2000; // wait 2 second extras
// the test failed with 100 ms of margin on cvs.apache.org on August 1st,
2003
public ExecuteOnTest(String name) {
super(name);
}
public void setUp() {
configureProject(BUILD_FILE);
}
public void tearDown() {
executeTarget("cleanup");
}
public void testNoRedirect() {
executeTarget("no-redirect");
String log = getLog();
File x = getProject().resolveFile("x");
File y = getProject().resolveFile("y");
File z = getProject().resolveFile("z");
int xout = log.indexOf(x + " out");
int yout = log.indexOf(y + " out");
int zout = log.indexOf(z + " out");
int xerr = log.indexOf(x + " err");
int yerr = log.indexOf(y + " err");
int zerr = log.indexOf(z + " err");
assertFalse("xout < 0", xout < 0);
assertFalse("yout < 0", yout < 0);
assertFalse("zout < 0", zout < 0);
assertFalse("xerr < 0", xerr < 0);
assertFalse("yerr < 0", yerr < 0);
assertFalse("zerr < 0", zerr < 0);
assertFalse("yout < xout", yout < xout);
assertFalse("zout < yout", zout < yout);
assertFalse("yerr < xerr", yerr < xerr);
assertFalse("zerr < yerr", zerr < yerr);
}
public void testRedirect1() {
executeTarget("redirect1");
String actualOut = null;
try {
actualOut = FileUtils.newFileUtils().readFully(new FileReader(
getProject().resolveFile("redirect.out")));
} catch (IOException eyeOhEx) {
}
File x = getProject().resolveFile("x");
File y = getProject().resolveFile("y");
File z = getProject().resolveFile("z");
int xout = actualOut.indexOf(x + " out");
int yout = actualOut.indexOf(y + " out");
int zout = actualOut.indexOf(z + " out");
int xerr = actualOut.indexOf(x + " err");
int yerr = actualOut.indexOf(y + " err");
int zerr = actualOut.indexOf(z + " err");
assertFalse("xout < 0", xout < 0);
assertFalse("yout < 0", yout < 0);
assertFalse("zout < 0", zout < 0);
assertFalse("xerr < 0", xerr < 0);
assertFalse("yerr < 0", yerr < 0);
assertFalse("zerr < 0", zerr < 0);
assertFalse("yout < xout", yout < xout);
assertFalse("zout < yout", zout < yout);
assertFalse("yerr < xerr", yerr < xerr);
assertFalse("zerr < yerr", zerr < yerr);
}
public void testRedirect2() {
executeTarget("redirect2");
String actualOut = null;
String actualErr = null;
try {
actualOut = FileUtils.newFileUtils().readFully(new FileReader(
getProject().resolveFile("redirect.out")));
actualErr = FileUtils.newFileUtils().readFully(new FileReader(
getProject().resolveFile("redirect.err")));
} catch (IOException eyeOhEx) {
}
File x = getProject().resolveFile("x");
File y = getProject().resolveFile("y");
File z = getProject().resolveFile("z");
int xout = actualOut.indexOf(x + " out");
int yout = actualOut.indexOf(y + " out");
int zout = actualOut.indexOf(z + " out");
int xerr = actualErr.indexOf(x + " err");
int yerr = actualErr.indexOf(y + " err");
int zerr = actualErr.indexOf(z + " err");
assertFalse("xout < 0", xout < 0);
assertFalse("yout < 0", yout < 0);
assertFalse("zout < 0", zout < 0);
assertFalse("xerr < 0", xerr < 0);
assertFalse("yerr < 0", yerr < 0);
assertFalse("zerr < 0", zerr < 0);
assertFalse("yout < xout", yout < xout);
assertFalse("zout < yout", zout < yout);
assertFalse("yerr < xerr", yerr < xerr);
assertFalse("zerr < yerr", zerr < yerr);
}
public void testRedirect3() {
executeTarget("redirect3");
String actualOut = null;
try {
actualOut = FileUtils.newFileUtils().readFully(new FileReader(
getProject().resolveFile("redirect.out")));
} catch (IOException eyeOhEx) {
}
File x = getProject().resolveFile("x");
File y = getProject().resolveFile("y");
File z = getProject().resolveFile("z");
int xout = actualOut.indexOf(x + " out");
int yout = actualOut.indexOf(y + " out");
int zout = actualOut.indexOf(z + " out");
int xerr = getLog().indexOf(x + " err");
int yerr = getLog().indexOf(y + " err");
int zerr = getLog().indexOf(z + " err");
assertFalse("xout < 0", xout < 0);
assertFalse("yout < 0", yout < 0);
assertFalse("zout < 0", zout < 0);
assertFalse("xerr < 0", xerr < 0);
assertFalse("yerr < 0", yerr < 0);
assertFalse("zerr < 0", zerr < 0);
assertFalse("yout < xout", yout < xout);
assertFalse("zout < yout", zout < yout);
assertFalse("yerr < xerr", yerr < xerr);
assertFalse("zerr < yerr", zerr < yerr);
assertPropertyEquals("redirect.out", x + " out");
}
public void testRedirect4() {
executeTarget("redirect4");
String actualOut = null;
String actualErr = null;
try {
actualOut = FileUtils.newFileUtils().readFully(new FileReader(
getProject().resolveFile("redirect.out")));
actualErr = FileUtils.newFileUtils().readFully(new FileReader(
getProject().resolveFile("redirect.err")));
} catch (IOException eyeOhEx) {
}
File x = getProject().resolveFile("x");
File y = getProject().resolveFile("y");
File z = getProject().resolveFile("z");
int xout = actualOut.indexOf(x + " out");
int yout = actualOut.indexOf(y + " out");
int zout = actualOut.indexOf(z + " out");
int xerr = actualErr.indexOf(x + " err");
int yerr = actualErr.indexOf(y + " err");
int zerr = actualErr.indexOf(z + " err");
assertFalse("xout < 0", xout < 0);
assertFalse("yout < 0", yout < 0);
assertFalse("zout < 0", zout < 0);
assertFalse("xerr < 0", xerr < 0);
assertFalse("yerr < 0", yerr < 0);
assertFalse("zerr < 0", zerr < 0);
assertFalse("yout < xout", yout < xout);
assertFalse("zout < yout", zout < yout);
assertFalse("yerr < xerr", yerr < xerr);
assertFalse("zerr < yerr", zerr < yerr);
assertPropertyEquals("redirect.out", x + " out");
assertPropertyEquals("redirect.err", x + " err");
}
public void testRedirect5() {
testRedirect5or6("redirect5");
}
public void testRedirect6() {
testRedirect5or6("redirect6");
}
private void testRedirect5or6(String target) {
executeTarget(target);
String actualOut = null;
String actualErr = null;
try {
actualOut = FileUtils.newFileUtils().readFully(new FileReader(
getProject().resolveFile("redirect.out")));
actualErr = FileUtils.newFileUtils().readFully(new FileReader(
getProject().resolveFile("redirect.err")));
} catch (IOException eyeOhEx) {
}
assertPropertyEquals("redirect.out", "blah y z");
assertPropertyEquals("redirect.err", "");
assertEquals("unexpected content in redirect.out",
"blah y z\nx blah z\nx y blah\n", actualOut);
assertEquals("unexpected content in redirect.err", null, actualErr);
}
public void testRedirect7() {
executeTarget("redirect7");
String actualOut = null;
String actualErr = null;
try {
actualOut = FileUtils.newFileUtils().readFully(new FileReader(
getProject().resolveFile("redirect.out")));
actualErr = FileUtils.newFileUtils().readFully(new FileReader(
getProject().resolveFile("redirect.err")));
} catch (IOException eyeOhEx) {
}
assertPropertyEquals("redirect.out", "blah y z");
assertPropertyUnset("redirect.err");
assertEquals("unexpected content in redirect.out",
"x y blah\n", actualOut);
assertEquals("unexpected content in redirect.err", null, actualErr);
}
}
---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]