Author: antoine Date: Tue Apr 19 21:45:54 2011 New Revision: 1095222 URL: http://svn.apache.org/viewvc?rev=1095222&view=rev Log: creating test for bugrep 50507 Exec task may mix the stderr and stdout output while logging it
Added: ant/core/trunk/src/etc/testcases/taskdefs/exec/blabla.sh ant/core/trunk/src/etc/testcases/taskdefs/exec/blabla.xml Modified: ant/core/trunk/src/etc/testcases/taskdefs/exec/exec.xml ant/core/trunk/src/tests/junit/org/apache/tools/ant/taskdefs/ExecTaskTest.java Added: ant/core/trunk/src/etc/testcases/taskdefs/exec/blabla.sh URL: http://svn.apache.org/viewvc/ant/core/trunk/src/etc/testcases/taskdefs/exec/blabla.sh?rev=1095222&view=auto ============================================================================== --- ant/core/trunk/src/etc/testcases/taskdefs/exec/blabla.sh (added) +++ ant/core/trunk/src/etc/testcases/taskdefs/exec/blabla.sh Tue Apr 19 21:45:54 2011 @@ -0,0 +1,24 @@ +# 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. +echo "some blablablablablablablablablablablabla error message" err>&2 +echo "some blablablablablablablablablablablabla info message" out +echo "some blablablablablablablablablablablabla error message" err>&2 +echo "some blablablablablablablablablablablabla info message" out +echo "some blablablablablablablablablablablabla error message" err>&2 +echo "some blablablablablablablablablablablabla info message" out +echo "some blablablablablablablablablablablabla error message" err>&2 +echo "some blablablablablablablablablablablabla info message" out +echo "some blablablablablablablablablablablabla error message" err>&2 +echo "some blablablablablablablablablablablabla info message" out Added: ant/core/trunk/src/etc/testcases/taskdefs/exec/blabla.xml URL: http://svn.apache.org/viewvc/ant/core/trunk/src/etc/testcases/taskdefs/exec/blabla.xml?rev=1095222&view=auto ============================================================================== --- ant/core/trunk/src/etc/testcases/taskdefs/exec/blabla.xml (added) +++ ant/core/trunk/src/etc/testcases/taskdefs/exec/blabla.xml Tue Apr 19 21:45:54 2011 @@ -0,0 +1,19 @@ +<project name="blabla" default="doit"> + <target name="blabla"> + <exec executable="sh"> + <arg value="blabla.sh" /> + </exec> + </target> + <target name="doit"> + <antcall target="blabla"/> + <antcall target="blabla"/> + <antcall target="blabla"/> + <antcall target="blabla"/> + <antcall target="blabla"/> + <antcall target="blabla"/> + <antcall target="blabla"/> + <antcall target="blabla"/> + <antcall target="blabla"/> + <antcall target="blabla"/> + </target> +</project> Modified: ant/core/trunk/src/etc/testcases/taskdefs/exec/exec.xml URL: http://svn.apache.org/viewvc/ant/core/trunk/src/etc/testcases/taskdefs/exec/exec.xml?rev=1095222&r1=1095221&r2=1095222&view=diff ============================================================================== --- ant/core/trunk/src/etc/testcases/taskdefs/exec/exec.xml (original) +++ ant/core/trunk/src/etc/testcases/taskdefs/exec/exec.xml Tue Apr 19 21:45:54 2011 @@ -20,12 +20,15 @@ <!-- 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="${java.io.tmpdir}/spawn.log"/> + <property name="output" location="${java.io.tmpdir}/testoutput"/> + <mkdir dir="${output}"/> + <property name="logFile" value="${output}/spawn.log"/> <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"/> + <property name="test.can.run" value="1"/> <condition property="test.can.run"> <or> <isset property="sh.executable"/> @@ -42,7 +45,25 @@ </exec> </target> + <target name="test-out-and-err" description="see https://issues.apache.org/bugzilla/show_bug.cgi?id=50507" depends="init" if="test.can.run"> + <mkdir dir="${output}" /> + <ant antfile="blabla.xml" output="${output}/test-out-and-err.txt"> + </ant> + <loadfile srcfile="${output}/test-out-and-err.txt" property="test-out-and-err"> + <filterchain> + <replaceregex pattern="^\s*\[exec\] some blablablablablablablablablablablabla error message err$" flags="m" /> + <replaceregex pattern="^\s*\[exec\] some blablablablablablablablablablablabla info message out$" flags="m" /> + </filterchain> + </loadfile> + <echo>${test-out-and-err}</echo> + <fail message="output indicates a mixup of out and err"> + <condition> + <contains string="${test-out-and-err}" substring="[exec]" /> + </condition> + </fail> + + </target> + <target name="cleanup"> - <delete file="${logFile}" /> </target> </project> Modified: ant/core/trunk/src/tests/junit/org/apache/tools/ant/taskdefs/ExecTaskTest.java URL: http://svn.apache.org/viewvc/ant/core/trunk/src/tests/junit/org/apache/tools/ant/taskdefs/ExecTaskTest.java?rev=1095222&r1=1095221&r2=1095222&view=diff ============================================================================== --- ant/core/trunk/src/tests/junit/org/apache/tools/ant/taskdefs/ExecTaskTest.java (original) +++ ant/core/trunk/src/tests/junit/org/apache/tools/ant/taskdefs/ExecTaskTest.java Tue Apr 19 21:45:54 2011 @@ -103,6 +103,10 @@ public class ExecTaskTest extends BuildF logFile = new File(logFile.getAbsolutePath()); assertTrue("log file found after spawn", logFile.exists()); } + + public void testOutAndErr() { + project.executeTarget("test-out-and-err"); + } private static class MonitoredBuild implements Runnable { private Thread worker;