diff options
Diffstat (limited to 'framework/src/ant/apache-ant-1.9.6/src/tests/junit/org/apache/tools/ant/taskdefs/FailTest.java')
-rw-r--r-- | framework/src/ant/apache-ant-1.9.6/src/tests/junit/org/apache/tools/ant/taskdefs/FailTest.java | 210 |
1 files changed, 210 insertions, 0 deletions
diff --git a/framework/src/ant/apache-ant-1.9.6/src/tests/junit/org/apache/tools/ant/taskdefs/FailTest.java b/framework/src/ant/apache-ant-1.9.6/src/tests/junit/org/apache/tools/ant/taskdefs/FailTest.java new file mode 100644 index 00000000..8883558d --- /dev/null +++ b/framework/src/ant/apache-ant-1.9.6/src/tests/junit/org/apache/tools/ant/taskdefs/FailTest.java @@ -0,0 +1,210 @@ +/* + * 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. + * + */ + +package org.apache.tools.ant.taskdefs; + +import org.apache.tools.ant.BuildException; +import org.apache.tools.ant.BuildFileRule; +import org.junit.Before; +import org.junit.Rule; +import org.junit.Test; + +import static org.junit.Assert.assertEquals; +import static org.junit.Assert.fail; + +/** + */ +public class FailTest { + + @Rule + public final BuildFileRule buildRule = new BuildFileRule(); + + @Before + public void setUp() { + buildRule.configureProject("src/etc/testcases/taskdefs/fail.xml"); + } + + @Test + public void test1() { + try { + buildRule.executeTarget("test1"); + fail("it is required to fail :-)") ; + } catch (BuildException ex) { + assertEquals("No message", ex.getMessage()); + } + } + + @Test + public void test2() { + try { + buildRule.executeTarget("test2"); + fail("it is required to fail :-)") ; + } catch (BuildException ex) { + assertEquals("test2", ex.getMessage()); + } + } + + @Test + public void testText() { + try { + buildRule.executeTarget("testText"); + fail("it is required to fail :-)") ; + } catch (BuildException ex) { + assertEquals("testText", ex.getMessage()); + } + } + + @Test + public void testIf() { + buildRule.executeTarget("testIf"); + buildRule.getProject().setProperty("foo", ""); + try { + buildRule.executeTarget("testIf"); + fail("testIf must fail if foo has been set") ; + } catch (BuildException ex) { + //TODO assert result + } + } + + @Test + public void testUnless() { + try { + buildRule.executeTarget("testUnless"); + fail("testUnless must fail unless foo has been set") ; + } catch (BuildException ex) { + //TODO assert rules + } + buildRule.getProject().setProperty("foo", ""); + buildRule.executeTarget("testUnless"); + + } + + /** + * see that the different combinations work, and + * that the autogenerated text contains information + * about which condition was not met + */ + @Test + public void testIfAndUnless() { + //neither + buildRule.executeTarget("testIfAndUnless"); + buildRule.getProject().setProperty("if", ""); + try { + buildRule.executeTarget("testIfAndUnless"); + fail("expect fail on defined(if)") ; + } catch (BuildException ex) { + assertEquals("if=if and unless=unless", ex.getMessage()); + } + buildRule.getProject().setProperty("unless", ""); + //this call should succeed as unless overrides if + buildRule.executeTarget("testIfAndUnless"); + } + /** + * see that the different combinations work, and + * that the autogenerated text contains information + * about which condition was not met + */ + @Test + public void testIfAndUnless2() { + buildRule.getProject().setProperty("unless", ""); + buildRule.executeTarget("testIfAndUnless"); + } + + @Test + public void testNested1() { + try { + buildRule.executeTarget("testNested1"); + fail("it is required to fail :-)") ; + } catch (BuildException ex) { + assertEquals("condition satisfied", ex.getMessage()); + } + } + + @Test + public void testNested2() { + buildRule.executeTarget("testNested2"); + } + + @Test + public void testNested3() { + try { + buildRule.executeTarget("testNested3"); + fail("it is required to fail :-)") ; + } catch (BuildException ex) { + assertEquals("testNested3", ex.getMessage()); + } + } + + @Test + public void testNested4() { + String specificMessage = "Nested conditions " + + "not permitted in conjunction with if/unless attributes"; + + char[] c = {'a', 'b', 'c'}; + StringBuffer target = new StringBuffer("testNested4x"); + + for (int i = 0; i < c.length; i++) { + target.setCharAt(target.length() - 1, c[i]); + try { + buildRule.executeTarget(target.toString()); + fail("it is required to fail :-)") ; + } catch (BuildException ex) { + assertEquals(specificMessage, ex.getMessage()); + } + } + } + + @Test + public void testNested5() { + try { + buildRule.executeTarget("testNested5"); + fail("it is required to fail :-)") ; + } catch (BuildException ex) { + assertEquals("Only one nested condition is allowed.", ex.getMessage()); + } + } + + @Test + public void testNested6() { + try { + buildRule.executeTarget("testNested6"); + fail("it is required to fail :-)") ; + } catch (BuildException ex) { + assertEquals("testNested6\ntestNested6\ntestNested6", ex.getMessage()); + } + } + + @Test + public void testNested7() { + String specificMessage = "A single nested condition is required."; + + char[] c = {'a', 'b'}; + StringBuffer target = new StringBuffer("testNested7x"); + + for (int i = 0; i < c.length; i++) { + target.setCharAt(target.length() - 1, c[i]); + try { + buildRule.executeTarget(target.toString()); + fail("it is required to fail :-)") ; + } catch (BuildException ex) { + assertEquals(specificMessage, ex.getMessage()); + } + } + } + +} |