summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--build.properties2
-rw-r--r--build.xml50
-rw-r--r--ivy.xml11
-rw-r--r--src/java/net/sf/antcontrib/logic/Assert.java5
-rw-r--r--src/java/net/sf/antcontrib/logic/condition/BooleanConditionBase.java57
-rw-r--r--src/java/net/sf/antcontrib/logic/condition/IsGreaterThan.java86
-rw-r--r--src/java/net/sf/antcontrib/logic/condition/IsLessThan.java86
-rw-r--r--src/java/net/sf/antcontrib/logic/condition/IsPropertyFalse.java45
-rw-r--r--src/java/net/sf/antcontrib/logic/condition/IsPropertyTrue.java45
9 files changed, 378 insertions, 9 deletions
diff --git a/build.properties b/build.properties
index 02f11bd..865565b 100644
--- a/build.properties
+++ b/build.properties
@@ -1,3 +1,3 @@
project.name=ant-contrib
-project.version=1.0
+project.version=dev
ivy.deliver.revision=${project.version}
diff --git a/build.xml b/build.xml
index c0cabf3..535a12d 100644
--- a/build.xml
+++ b/build.xml
@@ -44,7 +44,8 @@
</target>
<target name="classpath" depends="resolve">
- <ivy:cachepath id="compile.classpath" type="jar" conf="default" />
+ <ivy:cachepath id="compile.classpath" type="jar" conf="provided" />
+ <ivy:cachepath id="runtime.classpath" type="jar" conf="default" />
<ivy:cachepath id="test.classpath" type="jar" conf="test" />
</target>
@@ -62,7 +63,7 @@
</copy>
</target>
- <target name="compile-tests" depends="classpath">
+ <target name="compile-tests" depends="classpath,compile">
<mkdir dir="${target.test-classes.dir}" />
<javac srcdir="${test.src.dir}"
destdir="${target.test-classes.dir}"
@@ -77,7 +78,10 @@
<fileset dir="${test.src.dir}"
includes="**/*.properties,**/*.xml" />
<fileset dir="${test.resources.dir}"
- includes="**/*.java,**/*.properties,**/*.xml" />
+ includes="**/*.java,**/*.properties,**/*.xml"
+ excludes="**/design/src/**/*" />
+ <fileset dir="${test.resources.dir}/design/src"
+ includes="**/design/src/**/*" />
</copy>
</target>
@@ -199,4 +203,44 @@
<target name="dist" depends="package">
</target>
+
+ <target name="run-test" depends="compile-tests, jar">
+ <junit haltonfailure="false" haltonerror="false"
+ errorproperty="junit.error" failureproperty="junit.failure">
+ <formatter type="brief" usefile="false"/>
+ <batchtest>
+ <fileset dir="${target.test-classes.dir}" excludes="${skip-tests}">
+ <exclude name="**/antclipse/**" unless="eclipse.present"/>
+ </fileset>
+ </batchtest>
+ <sysproperty key="antcontrib.jar" file="${target.dir}/${project.name}.jar"/>
+ <classpath>
+ <path refid="test.classpath" />
+ <pathelement location="${target.classes.dir}" />
+ <pathelement location="${target.test-classes.dir}" />
+ </classpath>
+ </junit>
+
+ <fail message="JUnit error (${junit.error}) encountered." if="junit.error" />
+ <fail message="JUnit failure (${junit.failure}) encountered." if="junit.failure" />
+ </target>
+
+ <target name="test-all" depends="compile-tests">
+ <antcall target="run-test">
+ <param name="skip-tests" value="**/BuildFileTestBase.class"/>
+ </antcall>
+ </target>
+
+
+ <target name="gump-safe-test" depends="compile-tests">
+ <!-- all AntServerTest tests started failing on Gump
+ with IOException at 2004-12-06T15:00:16
+ after successfully completing at 2004-12-06T03:00:19 -->
+ <antcall target="run-test">
+ <param name="skip-tests" value="**/AntServerTest.class **/BuildFileTest*.class"/>
+ </antcall>
+ </target>
+
+ <target name="test" depends="gump-safe-test"/>
+
</project> \ No newline at end of file
diff --git a/ivy.xml b/ivy.xml
index cd37e8a..207b6ec 100644
--- a/ivy.xml
+++ b/ivy.xml
@@ -3,22 +3,27 @@
<configurations>
<conf name="default" />
+ <conf name="provided" extends="default" />
<conf name="test" extends="default" />
</configurations>
<publications>
<artifact name="ant-contrib" type="jar" />
</publications>
+
<dependencies>
<dependency org="apache"
name="bcel"
- rev="5.1" />
+ rev="5.1"
+ conf="default->default" />
<dependency org="apache"
name="ant"
- rev="1.6.5" />
+ rev="1.6.5"
+ conf="provided->default" />
<dependency org="apache"
name="xercesImpl"
- rev="2.6.2" />
+ rev="2.6.2"
+ conf="provided->default" />
<dependency org="junit"
name="junit"
rev="3.8.1"
diff --git a/src/java/net/sf/antcontrib/logic/Assert.java b/src/java/net/sf/antcontrib/logic/Assert.java
index 38ac6e8..eb5654a 100644
--- a/src/java/net/sf/antcontrib/logic/Assert.java
+++ b/src/java/net/sf/antcontrib/logic/Assert.java
@@ -19,20 +19,21 @@ import java.util.ArrayList;
import java.util.Iterator;
import java.util.List;
+import net.sf.antcontrib.logic.condition.BooleanConditionBase;
+
import org.apache.tools.ant.BuildException;
import org.apache.tools.ant.Task;
import org.apache.tools.ant.TaskContainer;
import org.apache.tools.ant.taskdefs.Exit;
import org.apache.tools.ant.taskdefs.Sequential;
import org.apache.tools.ant.taskdefs.condition.Condition;
-import org.apache.tools.ant.taskdefs.condition.ConditionBase;
/**
*
*/
public class Assert
- extends ConditionBase
+ extends BooleanConditionBase
implements TaskContainer {
private List tasks = new ArrayList();
diff --git a/src/java/net/sf/antcontrib/logic/condition/BooleanConditionBase.java b/src/java/net/sf/antcontrib/logic/condition/BooleanConditionBase.java
new file mode 100644
index 0000000..f99f819
--- /dev/null
+++ b/src/java/net/sf/antcontrib/logic/condition/BooleanConditionBase.java
@@ -0,0 +1,57 @@
+/*
+ * Copyright (c) 2001-2004 Ant-Contrib project. All rights reserved.
+ *
+ * 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 net.sf.antcontrib.logic.condition;
+
+import org.apache.tools.ant.taskdefs.condition.ConditionBase;
+
+/**
+ * Extends ConditionBase so I can get access to the condition count and the
+ * first condition. This is the class that the BooleanConditionTask is proxy
+ * for.
+ * <p>Developed for use with Antelope, migrated to ant-contrib Oct 2003.
+ *
+ * @author Dale Anson, [email protected]
+ */
+public class BooleanConditionBase extends ConditionBase {
+ /**
+ * Adds a feature to the IsPropertyTrue attribute of the BooleanConditionBase
+ * object
+ *
+ * @param i The feature to be added to the IsPropertyTrue attribute
+ */
+ public void addIsPropertyTrue( IsPropertyTrue i ) {
+ super.add( i );
+ }
+
+ /**
+ * Adds a feature to the IsPropertyFalse attribute of the
+ * BooleanConditionBase object
+ *
+ * @param i The feature to be added to the IsPropertyFalse attribute
+ */
+ public void addIsPropertyFalse( IsPropertyFalse i ) {
+ super.add( i );
+ }
+
+ public void addIsGreaterThan( IsGreaterThan i) {
+ super.add(i);
+ }
+
+ public void addIsLessThan( IsLessThan i) {
+ super.add(i);
+ }
+}
+
diff --git a/src/java/net/sf/antcontrib/logic/condition/IsGreaterThan.java b/src/java/net/sf/antcontrib/logic/condition/IsGreaterThan.java
new file mode 100644
index 0000000..d360825
--- /dev/null
+++ b/src/java/net/sf/antcontrib/logic/condition/IsGreaterThan.java
@@ -0,0 +1,86 @@
+/*
+ * Copyright (c) 2001-2004 Ant-Contrib project. All rights reserved.
+ *
+ * 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 net.sf.antcontrib.logic.condition;
+
+import org.apache.tools.ant.BuildException;
+import org.apache.tools.ant.taskdefs.condition.Equals;
+
+/**
+ * Extends Equals condition to test if the first argument is greater than the
+ * second argument. Will deal with base 10 integer and decimal numbers, otherwise,
+ * treats arguments as Strings.
+ * <p>Developed for use with Antelope, migrated to ant-contrib Oct 2003.
+ *
+ * @author Dale Anson, [email protected]
+ * @version $Revision: 1.4 $
+ */
+public class IsGreaterThan extends Equals {
+
+ private String arg1, arg2;
+ private boolean trim = false;
+ private boolean caseSensitive = true;
+
+ public void setArg1(String a1) {
+ arg1 = a1;
+ }
+
+ public void setArg2(String a2) {
+ arg2 = a2;
+ }
+
+ /**
+ * Should we want to trim the arguments before comparing them?
+ *
+ * @since Revision: 1.3, Ant 1.5
+ */
+ public void setTrim(boolean b) {
+ trim = b;
+ }
+
+ /**
+ * Should the comparison be case sensitive?
+ *
+ * @since Revision: 1.3, Ant 1.5
+ */
+ public void setCasesensitive(boolean b) {
+ caseSensitive = b;
+ }
+
+ public boolean eval() throws BuildException {
+ if (arg1 == null || arg2 == null) {
+ throw new BuildException("both arg1 and arg2 are required in "
+ + "greater than");
+ }
+
+ if (trim) {
+ arg1 = arg1.trim();
+ arg2 = arg2.trim();
+ }
+
+ // check if args are numbers
+ try {
+ double num1 = Double.parseDouble(arg1);
+ double num2 = Double.parseDouble(arg2);
+ return num1 > num2;
+ }
+ catch(NumberFormatException nfe) {
+ // ignored, fall thru to string comparision
+ }
+
+ return caseSensitive ? arg1.compareTo(arg2) > 0 : arg1.compareToIgnoreCase(arg2) > 0;
+ }
+
+}
diff --git a/src/java/net/sf/antcontrib/logic/condition/IsLessThan.java b/src/java/net/sf/antcontrib/logic/condition/IsLessThan.java
new file mode 100644
index 0000000..64c676c
--- /dev/null
+++ b/src/java/net/sf/antcontrib/logic/condition/IsLessThan.java
@@ -0,0 +1,86 @@
+/*
+ * Copyright (c) 2001-2004 Ant-Contrib project. All rights reserved.
+ *
+ * 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 net.sf.antcontrib.logic.condition;
+
+import org.apache.tools.ant.BuildException;
+import org.apache.tools.ant.taskdefs.condition.Equals;
+
+/**
+ * Extends Equals condition to test if the first argument is less than the
+ * second argument. Will deal with base 10 integer and decimal numbers, otherwise,
+ * treats arguments as Strings.
+ * <p>Developed for use with Antelope, migrated to ant-contrib Oct 2003.
+ *
+ * @author Dale Anson, [email protected]
+ * @version $Revision: 1.4 $
+ */
+public class IsLessThan extends Equals {
+
+ private String arg1, arg2;
+ private boolean trim = false;
+ private boolean caseSensitive = true;
+
+ public void setArg1(String a1) {
+ arg1 = a1;
+ }
+
+ public void setArg2(String a2) {
+ arg2 = a2;
+ }
+
+ /**
+ * Should we want to trim the arguments before comparing them?
+ *
+ * @since Revision: 1.3, Ant 1.5
+ */
+ public void setTrim(boolean b) {
+ trim = b;
+ }
+
+ /**
+ * Should the comparison be case sensitive?
+ *
+ * @since Revision: 1.3, Ant 1.5
+ */
+ public void setCasesensitive(boolean b) {
+ caseSensitive = b;
+ }
+
+ public boolean eval() throws BuildException {
+ if (arg1 == null || arg2 == null) {
+ throw new BuildException("both arg1 and arg2 are required in "
+ + "less than");
+ }
+
+ if (trim) {
+ arg1 = arg1.trim();
+ arg2 = arg2.trim();
+ }
+
+ // check if args are numbers
+ try {
+ double num1 = Double.parseDouble(arg1);
+ double num2 = Double.parseDouble(arg2);
+ return num1 < num2;
+ }
+ catch(NumberFormatException nfe) {
+ // ignored, fall thru to string comparision
+ }
+
+ return caseSensitive ? arg1.compareTo(arg2) < 0 : arg1.compareToIgnoreCase(arg2) < 0;
+ }
+
+}
diff --git a/src/java/net/sf/antcontrib/logic/condition/IsPropertyFalse.java b/src/java/net/sf/antcontrib/logic/condition/IsPropertyFalse.java
new file mode 100644
index 0000000..479f9fd
--- /dev/null
+++ b/src/java/net/sf/antcontrib/logic/condition/IsPropertyFalse.java
@@ -0,0 +1,45 @@
+/*
+ * Copyright (c) 2001-2004 Ant-Contrib project. All rights reserved.
+ *
+ * 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 net.sf.antcontrib.logic.condition;
+
+import org.apache.tools.ant.BuildException;
+import org.apache.tools.ant.taskdefs.condition.IsFalse;
+
+/**
+ * Extends IsFalse condition to check the value of a specified property.
+ * <p>Developed for use with Antelope, migrated to ant-contrib Oct 2003.
+ *
+ * @author Dale Anson, [email protected]
+ * @version $Revision: 1.3 $
+ */
+public class IsPropertyFalse extends IsFalse {
+
+ private String name = null;
+
+ public void setProperty(String name) {
+ this.name = name;
+ }
+
+ public boolean eval() throws BuildException {
+ if (name == null)
+ throw new BuildException("Property name must be set.");
+ String value = getProject().getProperty(name);
+ if (value == null)
+ return true;
+ return !getProject().toBoolean(value);
+ }
+
+}
diff --git a/src/java/net/sf/antcontrib/logic/condition/IsPropertyTrue.java b/src/java/net/sf/antcontrib/logic/condition/IsPropertyTrue.java
new file mode 100644
index 0000000..d1060ab
--- /dev/null
+++ b/src/java/net/sf/antcontrib/logic/condition/IsPropertyTrue.java
@@ -0,0 +1,45 @@
+/*
+ * Copyright (c) 2001-2004 Ant-Contrib project. All rights reserved.
+ *
+ * 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 net.sf.antcontrib.logic.condition;
+
+import org.apache.tools.ant.BuildException;
+import org.apache.tools.ant.taskdefs.condition.IsTrue;
+
+/**
+ * Extends IsTrue condition to check the value of a specified property.
+ * <p>Developed for use with Antelope, migrated to ant-contrib Oct 2003.
+ *
+ * @author Dale Anson, [email protected]
+ * @version $Revision: 1.3 $
+ */
+public class IsPropertyTrue extends IsTrue {
+
+ private String name = null;
+
+ public void setProperty( String name ) {
+ this.name = name;
+ }
+
+ public boolean eval() throws BuildException {
+ if ( name == null )
+ throw new BuildException( "Property name must be set." );
+ String value = getProject().getProperty( name );
+ if ( value == null )
+ return false;
+ return getProject().toBoolean( value );
+ }
+
+}