git-svn-id: https://svn.apache.org/repos/asf/ant/core/trunk@1095222 13f79535-47bb-0310-9956-ffa450edef68master
| @@ -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 | |||||
| @@ -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> | |||||
| @@ -20,12 +20,15 @@ | |||||
| <!-- this property can be overriden programatically in the Java test case --> | <!-- this property can be overriden programatically in the Java test case --> | ||||
| <property name="timeToWait" value="10"/> | <property name="timeToWait" value="10"/> | ||||
| <!-- this property can be overriden programatically in the Java test case --> | <!-- 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"/> | <property environment="env"/> | ||||
| <!-- UNIX --> | <!-- UNIX --> | ||||
| <available file="sh" filepath="${env.PATH}" property="sh.executable"/> | <available file="sh" filepath="${env.PATH}" property="sh.executable"/> | ||||
| <!-- CYGWIN --> | <!-- CYGWIN --> | ||||
| <available file="sh.exe" filepath="${env.PATH}" property="sh.exe.executable"/> | <available file="sh.exe" filepath="${env.PATH}" property="sh.exe.executable"/> | ||||
| <property name="test.can.run" value="1"/> | |||||
| <condition property="test.can.run"> | <condition property="test.can.run"> | ||||
| <or> | <or> | ||||
| <isset property="sh.executable"/> | <isset property="sh.executable"/> | ||||
| @@ -42,7 +45,25 @@ | |||||
| </exec> | </exec> | ||||
| </target> | </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"> | <target name="cleanup"> | ||||
| <delete file="${logFile}" /> | |||||
| </target> | </target> | ||||
| </project> | </project> | ||||
| @@ -103,6 +103,10 @@ public class ExecTaskTest extends BuildFileTest { | |||||
| logFile = new File(logFile.getAbsolutePath()); | logFile = new File(logFile.getAbsolutePath()); | ||||
| assertTrue("log file found after spawn", logFile.exists()); | assertTrue("log file found after spawn", logFile.exists()); | ||||
| } | } | ||||
| public void testOutAndErr() { | |||||
| project.executeTarget("test-out-and-err"); | |||||
| } | |||||
| private static class MonitoredBuild implements Runnable { | private static class MonitoredBuild implements Runnable { | ||||
| private Thread worker; | private Thread worker; | ||||