bodewig 2005/03/21 05:50:09 Modified: src/main/org/apache/tools/ant/taskdefs/optional Rpm.java Added: src/testcases/org/apache/tools/ant/taskdefs/optional RpmTest.java Log: Add unit test for <rpm> failonerror Revision Changes Path 1.26 +18 -9 ant/src/main/org/apache/tools/ant/taskdefs/optional/Rpm.java Index: Rpm.java =================================================================== RCS file: /home/cvs/ant/src/main/org/apache/tools/ant/taskdefs/optional/Rpm.java,v retrieving revision 1.25 retrieving revision 1.26 diff -u -r1.25 -r1.26 --- Rpm.java 17 Mar 2005 12:01:19 -0000 1.25 +++ Rpm.java 21 Mar 2005 13:50:09 -0000 1.26 @@ -172,15 +172,7 @@ streamhandler = new PumpStreamHandler(outputstream, errorstream); } - Execute exe = new Execute(streamhandler, null); - - exe.setAntRun(getProject()); - if (topDir == null) { - topDir = getProject().getBaseDir(); - } - exe.setWorkingDirectory(topDir); - - exe.setCommandline(toExecute.getCommandline()); + Execute exe = getExecute(toExecute, streamhandler); try { log("Building the RPM based on the " + specFile + " file"); int returncode = exe.execute(); @@ -336,4 +328,21 @@ return "rpm"; } + + /** + * @since Ant 1.7 + */ + protected Execute getExecute(Commandline toExecute, + ExecuteStreamHandler streamhandler) { + Execute exe = new Execute(streamhandler, null); + + exe.setAntRun(getProject()); + if (topDir == null) { + topDir = getProject().getBaseDir(); + } + exe.setWorkingDirectory(topDir); + + exe.setCommandline(toExecute.getCommandline()); + return exe; + } } 1.1 ant/src/testcases/org/apache/tools/ant/taskdefs/optional/RpmTest.java Index: RpmTest.java =================================================================== /* * Copyright 2005 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.optional; import org.apache.tools.ant.BuildException; import org.apache.tools.ant.taskdefs.Execute; import org.apache.tools.ant.taskdefs.ExecuteStreamHandler; import org.apache.tools.ant.types.Commandline; import junit.framework.TestCase; public class RpmTest extends TestCase { public void testShouldThrowExceptionWhenRpmFails() throws Exception { Rpm rpm = new MyRpm(); rpm.setProject(new org.apache.tools.ant.Project()); rpm.setFailOnError(true); // execute try { rpm.execute(); fail("should have thrown a build exception"); } catch (BuildException ex) { assertTrue(ex.getMessage() .indexOf("' failed with exit code 2") != -1); } } public void testShouldNotThrowExceptionWhenRpmFails() throws Exception { Rpm rpm = new MyRpm(); rpm.execute(); } // override some of the code so we can test the handling of the // return code only. public static class MyRpm extends Rpm { protected Execute getExecute(Commandline toExecute, ExecuteStreamHandler streamhandler) { return new Execute() { public int execute() { // 2 is != 0 and even, so it is considered // failure on any platform currently supported // by Execute#isFailure. return 2; } }; } public void log(String msg, int msgLevel) { } } }
--------------------------------------------------------------------- To unsubscribe, e-mail: [EMAIL PROTECTED] For additional commands, e-mail: [EMAIL PROTECTED]