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]

Reply via email to