From 499d174f02ac21f495cdaf1015d9c2979221103c Mon Sep 17 00:00:00 2001 From: Matthew Jason Benson Date: Mon, 16 Feb 2004 19:39:13 +0000 Subject: [PATCH] Add several I/O related test cases to and . PR: 26663 git-svn-id: https://svn.apache.org/repos/asf/ant/core/trunk@276097 13f79535-47bb-0310-9956-ffa450edef68 --- src/etc/testcases/taskdefs/exec/apply.xml | 120 +++++++++ src/etc/testcases/taskdefs/exec/exec.xml | 84 +++++- src/etc/testcases/taskdefs/exec/parrot.sh | 6 + .../tools/ant/taskdefs/ExecTaskTest.java | 128 ++++++++- .../tools/ant/taskdefs/ExecuteOnTest.java | 248 ++++++++++++++++++ 5 files changed, 580 insertions(+), 6 deletions(-) create mode 100755 src/etc/testcases/taskdefs/exec/apply.xml create mode 100755 src/etc/testcases/taskdefs/exec/parrot.sh create mode 100755 src/testcases/org/apache/tools/ant/taskdefs/ExecuteOnTest.java diff --git a/src/etc/testcases/taskdefs/exec/apply.xml b/src/etc/testcases/taskdefs/exec/apply.xml new file mode 100755 index 000000000..46a35521a --- /dev/null +++ b/src/etc/testcases/taskdefs/exec/apply.xml @@ -0,0 +1,120 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + s/x/blah/g${line.separator} + s/y/blah/g${line.separator} + s/z/blah/g${line.separator} + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + x y z${line.separator} + + + + + + + + + + + + + + + redirect.out=${redirect.out} + + + + + + + + + diff --git a/src/etc/testcases/taskdefs/exec/exec.xml b/src/etc/testcases/taskdefs/exec/exec.xml index 794733c5b..89692878f 100644 --- a/src/etc/testcases/taskdefs/exec/exec.xml +++ b/src/etc/testcases/taskdefs/exec/exec.xml @@ -3,7 +3,7 @@ - + @@ -15,7 +15,18 @@ + + + + + + + + + + + @@ -23,7 +34,74 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + x y z + + + + + + + + + + + - + + + + - \ No newline at end of file + diff --git a/src/etc/testcases/taskdefs/exec/parrot.sh b/src/etc/testcases/taskdefs/exec/parrot.sh new file mode 100755 index 000000000..eb947fac8 --- /dev/null +++ b/src/etc/testcases/taskdefs/exec/parrot.sh @@ -0,0 +1,6 @@ +# Copyright (c) 2004 The Apache Software Foundation. All rights reserved. +for arg in $@ ; do + echo $arg out + sleep 1 + echo $arg err>&2 +done diff --git a/src/testcases/org/apache/tools/ant/taskdefs/ExecTaskTest.java b/src/testcases/org/apache/tools/ant/taskdefs/ExecTaskTest.java index 4e82f4083..eb119cf50 100644 --- a/src/testcases/org/apache/tools/ant/taskdefs/ExecTaskTest.java +++ b/src/testcases/org/apache/tools/ant/taskdefs/ExecTaskTest.java @@ -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.*; 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 Antoine Levy-Lambert + * @author Matt Benson */ public class ExecTaskTest extends BuildFileTest { private static final String BUILD_PATH = "src/etc/testcases/taskdefs/exec/"; @@ -49,11 +52,130 @@ public class ExecTaskTest extends BuildFileTest { } 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() { project.executeTarget("init"); if (project.getProperty("test.can.run") == null) { diff --git a/src/testcases/org/apache/tools/ant/taskdefs/ExecuteOnTest.java b/src/testcases/org/apache/tools/ant/taskdefs/ExecuteOnTest.java new file mode 100755 index 000000000..7cdae5113 --- /dev/null +++ b/src/testcases/org/apache/tools/ant/taskdefs/ExecuteOnTest.java @@ -0,0 +1,248 @@ +/* + * 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); + } + +}