aboutsummaryrefslogtreecommitdiffstats
path: root/framework/src/ant/apache-ant-1.9.6/src/tests/junit/org/apache/tools/ant/taskdefs/SubAntTest.java
diff options
context:
space:
mode:
Diffstat (limited to 'framework/src/ant/apache-ant-1.9.6/src/tests/junit/org/apache/tools/ant/taskdefs/SubAntTest.java')
-rw-r--r--framework/src/ant/apache-ant-1.9.6/src/tests/junit/org/apache/tools/ant/taskdefs/SubAntTest.java161
1 files changed, 161 insertions, 0 deletions
diff --git a/framework/src/ant/apache-ant-1.9.6/src/tests/junit/org/apache/tools/ant/taskdefs/SubAntTest.java b/framework/src/ant/apache-ant-1.9.6/src/tests/junit/org/apache/tools/ant/taskdefs/SubAntTest.java
new file mode 100644
index 00000000..58ee4f3e
--- /dev/null
+++ b/framework/src/ant/apache-ant-1.9.6/src/tests/junit/org/apache/tools/ant/taskdefs/SubAntTest.java
@@ -0,0 +1,161 @@
+/*
+ * 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 java.io.File;
+
+import junit.framework.AssertionFailedError;
+
+import org.apache.tools.ant.BuildEvent;
+import org.apache.tools.ant.BuildException;
+import org.apache.tools.ant.BuildFileRule;
+import org.apache.tools.ant.BuildListener;
+import org.junit.Before;
+import org.junit.Rule;
+import org.junit.Test;
+
+import static org.apache.tools.ant.AntAssert.assertContains;
+import static org.junit.Assert.assertEquals;
+import static org.junit.Assert.fail;
+
+
+public class SubAntTest {
+
+ @Rule
+ public final BuildFileRule buildRule = new BuildFileRule();
+
+ @Before
+ public void setUp() {
+ buildRule.configureProject("src/etc/testcases/taskdefs/subant.xml");
+ }
+
+ @Test
+ public void testnodirs() {
+ buildRule.executeTarget("testnodirs");
+ assertEquals("No sub-builds to iterate on",buildRule.getLog());
+ }
+
+ // target must be specified
+ @Test
+ public void testgenericantfile() {
+ File dir1 = buildRule.getProject().resolveFile(".");
+ File dir2 = buildRule.getProject().resolveFile("subant/subant-test1");
+ File dir3 = buildRule.getProject().resolveFile("subant/subant-test2");
+
+ testBaseDirs("testgenericantfile",
+ new String[] { dir1.getAbsolutePath(),
+ dir2.getAbsolutePath(),
+ dir3.getAbsolutePath()
+
+ });
+ }
+
+ @Test
+ public void testantfile() {
+ File dir1 = buildRule.getProject().resolveFile(".");
+ // basedir of subant/subant-test1/subant.xml is ..
+ // therefore we expect here the subant/subant-test1 subdirectory
+ File dir2 = buildRule.getProject().resolveFile("subant/subant-test1");
+ // basedir of subant/subant-test2/subant.xml is ..
+ // therefore we expect here the subant subdirectory
+ File dir3 = buildRule.getProject().resolveFile("subant");
+
+ testBaseDirs("testantfile",
+ new String[] { dir1.getAbsolutePath(),
+ dir2.getAbsolutePath(),
+ dir3.getAbsolutePath()
+
+ });
+
+ }
+
+ @Test
+ public void testMultipleTargets() {
+ buildRule.executeTarget("multipleTargets");
+ assertContains("test1-one", buildRule.getLog());
+ assertContains("test1-two", buildRule.getLog());
+ assertContains("test2-one", buildRule.getLog());
+ assertContains("test2-two", buildRule.getLog());
+ }
+
+ @Test
+ public void testMultipleTargetsOneDoesntExist_FOEfalse() {
+ buildRule.executeTarget("multipleTargetsOneDoesntExist_FOEfalse");
+ assertContains("Target \"three\" does not exist in the project \"subant\"", buildRule.getLog());
+ }
+
+ @Test
+ public void testMultipleTargetsOneDoesntExist_FOEtrue() {
+ try {
+ buildRule.executeTarget("multipleTargetsOneDoesntExist_FOEtrue");
+ fail("BuildException expected: Calling not existent target");
+ } catch (BuildException ex) {
+ assertContains("Target \"three\" does not exist in the project \"subant\"", ex.getMessage());
+ }
+ }
+
+ protected void testBaseDirs(String target, String[] dirs) {
+ SubAntTest.BasedirChecker bc = new SubAntTest.BasedirChecker(dirs);
+ buildRule.getProject().addBuildListener(bc);
+ buildRule.executeTarget(target);
+ AssertionFailedError ae = bc.getError();
+ if (ae != null) {
+ throw ae;
+ }
+ buildRule.getProject().removeBuildListener(bc);
+ }
+
+ private class BasedirChecker implements BuildListener {
+ private String[] expectedBasedirs;
+ private int calls = 0;
+ private AssertionFailedError error;
+
+ BasedirChecker(String[] dirs) {
+ expectedBasedirs = dirs;
+ }
+
+ public void buildStarted(BuildEvent event) {}
+ public void buildFinished(BuildEvent event) {}
+ public void targetFinished(BuildEvent event){}
+ public void taskStarted(BuildEvent event) {}
+ public void taskFinished(BuildEvent event) {}
+ public void messageLogged(BuildEvent event) {}
+
+ public void targetStarted(BuildEvent event) {
+ if (event.getTarget().getName().equals("")) {
+ return;
+ }
+ if (error == null) {
+ try {
+ assertEquals(expectedBasedirs[calls++],
+ event.getProject().getBaseDir().getAbsolutePath());
+ } catch (AssertionFailedError e) {
+ error = e;
+ }
+ }
+ }
+
+ AssertionFailedError getError() {
+ return error;
+ }
+
+ }
+
+
+}