Browse Source

Add unit test for <rpm> failonerror

git-svn-id: https://svn.apache.org/repos/asf/ant/core/trunk@278027 13f79535-47bb-0310-9956-ffa450edef68
master
Stefan Bodewig 20 years ago
parent
commit
aff45f3377
2 changed files with 83 additions and 9 deletions
  1. +18
    -9
      src/main/org/apache/tools/ant/taskdefs/optional/Rpm.java
  2. +65
    -0
      src/testcases/org/apache/tools/ant/taskdefs/optional/RpmTest.java

+ 18
- 9
src/main/org/apache/tools/ant/taskdefs/optional/Rpm.java View File

@@ -172,15 +172,7 @@ public class Rpm extends Task {
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 @@ public class Rpm extends Task {

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;
}
}

+ 65
- 0
src/testcases/org/apache/tools/ant/taskdefs/optional/RpmTest.java View File

@@ -0,0 +1,65 @@
/*
* 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) {
}
}

}

Loading…
Cancel
Save