diff --git a/src/etc/testcases/taskdefs/exec/apply.xml b/src/etc/testcases/taskdefs/exec/apply.xml
deleted file mode 100755
index 8e217372a..000000000
--- a/src/etc/testcases/taskdefs/exec/apply.xml
+++ /dev/null
@@ -1,470 +0,0 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- s/x/blah/g${line.separator}
- s/y/blah/g${line.separator}
- s/z/blah/g${line.separator}
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- x y z${line.separator}
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- x y z${line.separator}
-
-
-
-
-
-
-
-
-
-
-
-
- x before y before z${line.separator}
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- x before y before z${line.separator}
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- x before y before z${line.separator}
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- z before y before x${line.separator}
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
diff --git a/src/tests/antunit/taskdefs/exec/apply-test.xml b/src/tests/antunit/taskdefs/exec/apply-test.xml
new file mode 100755
index 000000000..7b0b353fc
--- /dev/null
+++ b/src/tests/antunit/taskdefs/exec/apply-test.xml
@@ -0,0 +1,724 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ @@{refid}=@{refid}
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ s/x/blah/g${eol}
+ s/y/blah/g${eol}
+ s/z/blah/g${eol}
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ x y z${eol}
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ x y z${eol}
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ x before y before z${eol}
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ x before y before z${eol}
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ x before y before z${eol}
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ z before y before x${eol}
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/src/tests/antunit/taskdefs/exec/parrot.sh b/src/tests/antunit/taskdefs/exec/parrot.sh
new file mode 100755
index 000000000..2467f23a0
--- /dev/null
+++ b/src/tests/antunit/taskdefs/exec/parrot.sh
@@ -0,0 +1,19 @@
+# Licensed to the Apache Software Foundation (ASF) under one or more
+# contributor license agreements. See the NOTICE file distributed with
+# this work for additional information regarding copyright ownership.
+# The ASF licenses this file to You 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.
+for arg in "$@" ; do
+ echo $arg out
+ sleep 1
+ echo $arg err>&2
+done
diff --git a/src/tests/junit/org/apache/tools/ant/taskdefs/ExecuteOnTest.java b/src/tests/junit/org/apache/tools/ant/taskdefs/ExecuteOnTest.java
deleted file mode 100755
index a748cd373..000000000
--- a/src/tests/junit/org/apache/tools/ant/taskdefs/ExecuteOnTest.java
+++ /dev/null
@@ -1,599 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- * contributor license agreements. See the NOTICE file distributed with
- * this work for additional information regarding copyright ownership.
- * The ASF licenses this file to You 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 java.io.File;
-import java.io.FileReader;
-import java.io.IOException;
-
-import org.apache.tools.ant.BuildFileTest;
-import org.apache.tools.ant.util.FileUtils;
-
-/**
- * Unit test for the <apply> task.
- */
-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 static final String LINE_SEP = System.getProperty("line.separator");
-
- public ExecuteOnTest(String name) {
- super(name);
- }
-
- public void setUp() {
- configureProject(BUILD_FILE);
- }
-
- public void tearDown() {
- executeTarget("cleanup");
- }
-
- public void testNoRedirect() {
- executeTarget("no-redirect");
- if (getProject().getProperty("test.can.run") == null) {
- return;
- }
-
- 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=" + xout, xout < 0);
- assertFalse("yout=" + yout, yout < 0);
- assertFalse("zout=" + zout, zout < 0);
- assertFalse("xerr=" + xerr, xerr < 0);
- assertFalse("yerr=" + yerr, yerr < 0);
- assertFalse("zerr=" + zerr, 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() throws IOException {
- executeTarget("redirect1");
- if (getProject().getProperty("test.can.run") == null) {
- return;
- }
- String actualOut = getFileString("redirect.out");
-
- 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=" + xout, xout < 0);
- assertFalse("yout=" + yout, yout < 0);
- assertFalse("zout=" + zout, zout < 0);
- assertFalse("xerr=" + xerr, xerr < 0);
- assertFalse("yerr=" + yerr, yerr < 0);
- assertFalse("zerr=" + zerr, 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() throws IOException {
- executeTarget("redirect2");
- if (getProject().getProperty("test.can.run") == null) {
- return;
- }
- String actualOut = getFileString("redirect.out");
- String actualErr = getFileString("redirect.err");
-
- 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=" + xout, xout < 0);
- assertFalse("yout=" + yout, yout < 0);
- assertFalse("zout=" + zout, zout < 0);
- assertFalse("xerr=" + xerr, xerr < 0);
- assertFalse("yerr=" + yerr, yerr < 0);
- assertFalse("zerr=" + zerr, 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() throws IOException {
- executeTarget("redirect3");
- if (getProject().getProperty("test.can.run") == null) {
- return;
- }
- String actualOut = getFileString("redirect.out");
-
- 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=" + xout, xout < 0);
- assertFalse("yout=" + yout, yout < 0);
- assertFalse("zout=" + zout, zout < 0);
- assertFalse("xerr=" + xerr, xerr < 0);
- assertFalse("yerr=" + yerr, yerr < 0);
- assertFalse("zerr=" + zerr, zerr < 0);
- assertFalse("yout < xout", yout < xout);
- assertFalse("zout < yout", zout < yout);
- assertFalse("yerr < xerr", yerr < xerr);
- assertFalse("zerr < yerr", zerr < yerr);
-
- String outProperty = getProject().getProperty("redirect.out");
- int pxout = outProperty.indexOf(x + " out");
- int pyout = outProperty.indexOf(y + " out");
- int pzout = outProperty.indexOf(z + " out");
- assertFalse("pxout=" + pxout, pxout < 0);
- assertFalse("pyout=" + pyout, pyout < 0);
- assertFalse("pzout=" + pzout, pzout < 0);
- assertFalse("pyout < pxout", pyout < pxout);
- assertFalse("pzout < pyout", pzout < pyout);
- }
-
- public void testRedirect4() throws IOException {
- executeTarget("redirect4");
- if (getProject().getProperty("test.can.run") == null) {
- return;
- }
- String actualOut = getFileString("redirect.out");
- String actualErr = getFileString("redirect.err");
-
- 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=" + xout, xout < 0);
- assertFalse("yout=" + yout, yout < 0);
- assertFalse("zout=" + zout, zout < 0);
- assertFalse("xerr=" + xerr, xerr < 0);
- assertFalse("yerr=" + yerr, yerr < 0);
- assertFalse("zerr=" + zerr, zerr < 0);
- assertFalse("yout < xout", yout < xout);
- assertFalse("zout < yout", zout < yout);
- assertFalse("yerr < xerr", yerr < xerr);
- assertFalse("zerr < yerr", zerr < yerr);
-
- String outProperty = getProject().getProperty("redirect.out");
- int pxout = outProperty.indexOf(x + " out");
- int pyout = outProperty.indexOf(y + " out");
- int pzout = outProperty.indexOf(z + " out");
- assertFalse("pxout=" + pxout, pxout < 0);
- assertFalse("pyout=" + pyout, pyout < 0);
- assertFalse("pzout=" + pzout, pzout < 0);
- assertFalse("pyout < pxout", pyout < pxout);
- assertFalse("pzout < pyout", pzout < pyout);
-
- String errorProperty = getProject().getProperty("redirect.err");
- int pxerr = errorProperty.indexOf(x + " err");
- int pyerr = errorProperty.indexOf(y + " err");
- int pzerr = errorProperty.indexOf(z + " err");
- assertFalse("pxerr=" + pxerr, pxerr < 0);
- assertFalse("pyerr=" + pyerr, pyerr < 0);
- assertFalse("pzerr=" + pzerr, pzerr < 0);
- assertFalse("pyerr < pxerr", pyerr < pxerr);
- assertFalse("pzerr < pyerr", pzerr < pyerr);
- }
-
- public void testRedirect5() throws IOException {
- testRedirect5or6("redirect5");
- }
-
- public void testRedirect6() throws IOException {
- testRedirect5or6("redirect6");
- }
-
- private void testRedirect5or6(String target) throws IOException {
- executeTarget(target);
- if (getProject().getProperty("sed.can.run") == null) {
- return;
- }
-
- assertPropertyEquals("redirect.out", getProject().replaceProperties(
- "blah y z${line.separator}x blah z${line.separator}x y blah"));
- assertPropertyEquals("redirect.err", "");
- assertEquals("unexpected output",
- "blah y z\nx blah z\nx y blah\n", getFileString("redirect.out"));
- assertNull("unexpected error output", getFileString("redirect.err"));
- }
-
- public void testRedirect7() throws IOException {
- executeTarget("redirect7");
- if (getProject().getProperty("sed.can.run") == null) {
- return;
- }
-
- assertPropertyEquals("redirect.out", "blah y z");
- assertPropertyUnset("redirect.err");
- assertEquals("unexpected output",
- "x y blah\n", getFileString("redirect.out"));
- assertNull("unexpected error output", getFileString("redirect.err"));
- }
-
- public void testRedirector1() {
- executeTarget("init");
- if (getProject().getProperty("test.can.run") == null) {
- return;
- }
- expectBuildException("redirector1", "cannot have > 1 nested s");
- }
-
- public void testRedirector2() throws IOException {
- executeTarget("redirector2");
- if (getProject().getProperty("test.can.run") == null) {
- return;
- }
-
- String actualOut = getFileString("redirector.out");
-
- 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=" + xout, xout < 0);
- assertFalse("yout=" + yout, yout < 0);
- assertFalse("zout=" + zout, zout < 0);
- assertFalse("xerr=" + xerr, xerr < 0);
- assertFalse("yerr=" + yerr, yerr < 0);
- assertFalse("zerr=" + zerr, zerr < 0);
- assertFalse("yout < xout", yout < xout);
- assertFalse("zout < yout", zout < yout);
- assertFalse("yerr < xerr", yerr < xerr);
- assertFalse("zerr < yerr", zerr < yerr);
- }
-
- public void testRedirector3() throws IOException {
- executeTarget("redirector3");
- if (getProject().getProperty("test.can.run") == null) {
- return;
- }
-
- String actualOut = getFileString("redirector.out");
- String actualErr = getFileString("redirector.err");
-
- 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=" + xout, xout < 0);
- assertFalse("yout=" + yout, yout < 0);
- assertFalse("zout=" + zout, zout < 0);
- assertFalse("xerr=" + xerr, xerr < 0);
- assertFalse("yerr=" + yerr, yerr < 0);
- assertFalse("zerr=" + zerr, zerr < 0);
- assertFalse("yout < xout", yout < xout);
- assertFalse("zout < yout", zout < yout);
- assertFalse("yerr < xerr", yerr < xerr);
- assertFalse("zerr < yerr", zerr < yerr);
- }
-
- public void testRedirector4() throws IOException {
- executeTarget("redirector4");
- if (getProject().getProperty("test.can.run") == null) {
- return;
- }
- String actualOut = getFileString("redirector.out");
-
- 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=" + xout, xout < 0);
- assertFalse("yout=" + yout, yout < 0);
- assertFalse("zout=" + zout, zout < 0);
- assertFalse("xerr=" + xerr, xerr < 0);
- assertFalse("yerr=" + yerr, yerr < 0);
- assertFalse("zerr=" + zerr, zerr < 0);
- assertFalse("yout < xout", yout < xout);
- assertFalse("zout < yout", zout < yout);
- assertFalse("yerr < xerr", yerr < xerr);
- assertFalse("zerr < yerr", zerr < yerr);
-
- String outProperty = getProject().getProperty("redirector.out");
- int pxout = outProperty.indexOf(x + " out");
- int pyout = outProperty.indexOf(y + " out");
- int pzout = outProperty.indexOf(z + " out");
- assertFalse("pxout=" + pxout, pxout < 0);
- assertFalse("pyout=" + pyout, pyout < 0);
- assertFalse("pzout=" + pzout, pzout < 0);
- assertFalse("pyout < pxout", pyout < pxout);
- assertFalse("pzout < pyout", pzout < pyout);
- }
-
- public void testRedirector5() throws IOException {
- testRedirector5or6("redirector5");
- }
-
- public void testRedirector6() throws IOException {
- testRedirector5or6("redirector6");
- }
-
- private void testRedirector5or6(String target) throws IOException {
- executeTarget(target);
- if (getProject().getProperty("test.can.run") == null) {
- return;
- }
- String actualOut = getFileString("redirector.out");
- String actualErr = getFileString("redirector.err");
-
- 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=" + xout, xout < 0);
- assertFalse("yout=" + yout, yout < 0);
- assertFalse("zout=" + zout, zout < 0);
- assertFalse("xerr=" + xerr, xerr < 0);
- assertFalse("yerr=" + yerr, yerr < 0);
- assertFalse("zerr=" + zerr, zerr < 0);
- assertFalse("yout < xout", yout < xout);
- assertFalse("zout < yout", zout < yout);
- assertFalse("yerr < xerr", yerr < xerr);
- assertFalse("zerr < yerr", zerr < yerr);
-
- String outProperty = getProject().getProperty("redirector.out");
- int pxout = outProperty.indexOf(x + " out");
- int pyout = outProperty.indexOf(y + " out");
- int pzout = outProperty.indexOf(z + " out");
- assertFalse("pxout=" + pxout, pxout < 0);
- assertFalse("pyout=" + pyout, pyout < 0);
- assertFalse("pzout=" + pzout, pzout < 0);
- assertFalse("pyout < pxout", pyout < pxout);
- assertFalse("pzout < pyout", pzout < pyout);
-
- String errorProperty = getProject().getProperty("redirector.err");
- int pxerr = errorProperty.indexOf(x + " err");
- int pyerr = errorProperty.indexOf(y + " err");
- int pzerr = errorProperty.indexOf(z + " err");
- assertFalse("pxerr=" + pxerr, pxerr < 0);
- assertFalse("pyerr=" + pyerr, pyerr < 0);
- assertFalse("pzerr=" + pzerr, pzerr < 0);
- assertFalse("pyerr < pxerr", pyerr < pxerr);
- assertFalse("pzerr < pyerr", pzerr < pyerr);
- }
-
- public void testRedirector7() throws IOException {
- executeTarget("redirector7");
- if (getProject().getProperty("test.can.run") == null) {
- return;
- }
- String actualOut = getFileString("redirector.out");
- String actualErr = getFileString("redirector.err");
-
- 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 + " ERROR!!!");
- int yerr = actualErr.indexOf(y + " ERROR!!!");
- int zerr = actualErr.indexOf(z + " ERROR!!!");
- assertFalse("xout=" + xout, xout < 0);
- assertFalse("yout=" + yout, yout < 0);
- assertFalse("zout=" + zout, zout < 0);
- assertFalse("xerr=" + xerr, xerr < 0);
- assertFalse("yerr=" + yerr, yerr < 0);
- assertFalse("zerr=" + zerr, zerr < 0);
- assertFalse("yout < xout", yout < xout);
- assertFalse("zout < yout", zout < yout);
- assertFalse("yerr < xerr", yerr < xerr);
- assertFalse("zerr < yerr", zerr < yerr);
-
- String outProperty = getProject().getProperty("redirector.out");
- int pxout = outProperty.indexOf(x + " out");
- int pyout = outProperty.indexOf(y + " out");
- int pzout = outProperty.indexOf(z + " out");
- assertFalse("pxout=" + pxout, pxout < 0);
- assertFalse("pyout=" + pyout, pyout < 0);
- assertFalse("pzout=" + pzout, pzout < 0);
- assertFalse("pyout < pxout", pyout < pxout);
- assertFalse("pzout < pyout", pzout < pyout);
-
- String errorProperty = getProject().getProperty("redirector.err");
- int pxerr = errorProperty.indexOf(x + " ERROR!!!");
- int pyerr = errorProperty.indexOf(y + " ERROR!!!");
- int pzerr = errorProperty.indexOf(z + " ERROR!!!");
- assertFalse("pxerr=" + pxerr, pxerr < 0);
- assertFalse("pyerr=" + pyerr, pyerr < 0);
- assertFalse("pzerr=" + pzerr, pzerr < 0);
- assertFalse("pyerr < pxerr", pyerr < pxerr);
- assertFalse("pzerr < pyerr", pzerr < pyerr);
- }
-
- public void testRedirector8() throws IOException {
- executeTarget("redirector8");
- if (getProject().getProperty("sed.can.run") == null) {
- return;
- }
-
- assertPropertyEquals("redirector.out", getProject().replaceProperties(
- "blah y z${line.separator}x blah z${line.separator}x y blah"));
- assertPropertyEquals("redirector.err", "");
- assertEquals("unexpected output",
- "blah y z\nx blah z\nx y blah\n", getFileString("redirector.out"));
- assertNull("unexpected error output", getFileString("redirector.err"));
- }
-
- public void testRedirector9() throws IOException {
- testRedirector9Thru12("redirector9");
- }
-
- public void testRedirector10() throws IOException {
- testRedirector9Thru12("redirector10");
- }
-
- public void testRedirector11() throws IOException {
- testRedirector9Thru12("redirector11");
- }
-
- public void testRedirector12() throws IOException {
- testRedirector9Thru12("redirector12");
- }
-
- private void testRedirector9Thru12(String target) throws IOException {
- executeTarget(target);
- if (getProject().getProperty("sed.can.run") == null) {
- return;
- }
-
- assertNull("unexpected error output", getFileString("redirector.err"));
- assertPropertyEquals("redirector.out", getProject().replaceProperties(
- "blah after y after z${line.separator}x after blah after z"
- + "${line.separator}x after y after blah"));
- assertPropertyEquals("redirector.err", "");
- assertEquals("unexpected output",
- "blah after y after z\nx after blah after z"
- + "\nx after y after blah\n", getFileString("redirector.out"));
- }
-
- public void testRedirector13() {
- executeTarget("redirector13");
- if (getProject().getProperty("test.can.run") == null) {
- return;
- }
- String log = getLog();
- File x = getProject().resolveFile("x");
- File y = getProject().resolveFile("y");
- File z = getProject().resolveFile("z");
- int xout = log.indexOf(x + " OUTPUT???");
- int yout = log.indexOf(y + " OUTPUT???");
- int zout = log.indexOf(z + " OUTPUT???");
- int xerr = log.indexOf(x + " ERROR!!!");
- int yerr = log.indexOf(y + " ERROR!!!");
- int zerr = log.indexOf(z + " ERROR!!!");
- assertFalse("xout=" + xout, xout < 0);
- assertFalse("yout=" + yout, yout < 0);
- assertFalse("zout=" + zout, zout < 0);
- assertFalse("xerr=" + xerr, xerr < 0);
- assertFalse("yerr=" + yerr, yerr < 0);
- assertFalse("zerr=" + zerr, zerr < 0);
- assertFalse("yout < xout", yout < xout);
- assertFalse("zout < yout", zout < yout);
- assertFalse("yerr < xerr", yerr < xerr);
- assertFalse("zerr < yerr", zerr < yerr);
- }
-
- public void testRedirector14() throws IOException {
- executeTarget("redirector14");
- if (getProject().getProperty("sed.can.run") == null) {
- return;
- }
-
- assertEquals("unexpected log content",
- "z after y after blahx after y after blah", getLog());
-
- assertEquals("unexpected redirector.out content",
- "x after blah after z\n", getFileString("redirector.out"));
-
- assertNull("unexpected redirector.err content", getFileString("redirector.err"));
- }
-
- public void testIgnoreMissing() {
- executeTarget("ignoremissing");
- }
-
- public void testForce() {
- executeTarget("force");
- }
-
- public void testNoDest() {
- executeTarget("testNoDest");
- }
-
- public void testLsPath() {
- testLsPath("lsPath");
- }
-
- public void testLsPathParallel() {
- testLsPath("lsPathParallel");
- }
-
- private void testLsPath(String target) {
- executeTarget(target);
- if (getProject().getProperty("ls.can.run") == null) {
- return;
- }
- String foo = getProject().getProperty("foo");
- assertNotNull(foo);
- int indNoExt = foo.indexOf("ls" + LINE_SEP);
- int indExe = foo.indexOf("ls.exe" + LINE_SEP);
- assertTrue(indNoExt >= 0 || indExe >= 0);
- }
-
- //borrowed from TokenFilterTest
- private String getFileString(String filename) throws IOException {
- String result = null;
- FileReader reader = null;
- try {
- reader = new FileReader(getProject().resolveFile(filename));
- result = FileUtils.readFully(reader);
- } finally {
- FileUtils.close(reader);
- }
- return result;
- }
-
-}