Browse Source

creating test for bugrep 50507 Exec task may mix the stderr and stdout output while logging it

git-svn-id: https://svn.apache.org/repos/asf/ant/core/trunk@1095222 13f79535-47bb-0310-9956-ffa450edef68
master
Antoine Levy-Lambert 14 years ago
parent
commit
1369b7ee39
4 changed files with 70 additions and 2 deletions
  1. +24
    -0
      src/etc/testcases/taskdefs/exec/blabla.sh
  2. +19
    -0
      src/etc/testcases/taskdefs/exec/blabla.xml
  3. +23
    -2
      src/etc/testcases/taskdefs/exec/exec.xml
  4. +4
    -0
      src/tests/junit/org/apache/tools/ant/taskdefs/ExecTaskTest.java

+ 24
- 0
src/etc/testcases/taskdefs/exec/blabla.sh View File

@@ -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

+ 19
- 0
src/etc/testcases/taskdefs/exec/blabla.xml View File

@@ -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>

+ 23
- 2
src/etc/testcases/taskdefs/exec/exec.xml View File

@@ -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>

+ 4
- 0
src/tests/junit/org/apache/tools/ant/taskdefs/ExecTaskTest.java View File

@@ -103,6 +103,10 @@ public class ExecTaskTest extends BuildFileTest {
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;


Loading…
Cancel
Save