share a common abstract base class. * Fixed <ant1> test files so that they run under Ant1.4, for checking. * Fixed build so that ant1_todo.atl only includes the correct files. git-svn-id: https://svn.apache.org/repos/asf/ant/core/trunk@272107 13f79535-47bb-0310-9956-ffa450edef68master
@@ -306,7 +306,7 @@ Legal: | |||||
<property name="regexp.package" value="${util.package}/regexp"/> | <property name="regexp.package" value="${util.package}/regexp"/> | ||||
<patternset id="ant1.todo.include"> | <patternset id="ant1.todo.include"> | ||||
<include name="org/apache/tools/**" /> | |||||
<include name="org/apache/tools/todo/**" /> | |||||
<exclude name="${regexp.package}/JakartaRegexp*.java" | <exclude name="${regexp.package}/JakartaRegexp*.java" | ||||
unless="jakarta.regexp.present" /> | unless="jakarta.regexp.present" /> | ||||
<exclude name="${regexp.package}/JakartaOro*.java" | <exclude name="${regexp.package}/JakartaOro*.java" | ||||
@@ -16,12 +16,8 @@ | |||||
<!-- Tasks specialised for myrmidon --> | <!-- Tasks specialised for myrmidon --> | ||||
<task name="ant1.ant" | <task name="ant1.ant" | ||||
classname="org.apache.tools.ant.taskdefs.Ant" /> | classname="org.apache.tools.ant.taskdefs.Ant" /> | ||||
<!-- Tasks not currently supported. | |||||
<task name="ant1.antcall" | |||||
classname="org.apache.tools.ant.taskdefs.CallTarget" /> | |||||
--> | |||||
<task name="ant1.antcall" | |||||
classname="org.apache.tools.ant.taskdefs.CallTarget" /> | |||||
<!-- standard ant tasks --> | <!-- standard ant tasks --> | ||||
<task name="ant1.mkdir" | <task name="ant1.mkdir" | ||||
@@ -10,7 +10,7 @@ package org.apache.tools.ant; | |||||
import java.io.File; | import java.io.File; | ||||
import java.io.IOException; | import java.io.IOException; | ||||
import java.io.InputStream; | import java.io.InputStream; | ||||
import java.net.URL; | |||||
import java.security.CodeSource; | |||||
import java.util.Enumeration; | import java.util.Enumeration; | ||||
import java.util.HashSet; | import java.util.HashSet; | ||||
import java.util.Hashtable; | import java.util.Hashtable; | ||||
@@ -18,7 +18,6 @@ import java.util.Iterator; | |||||
import java.util.Map; | import java.util.Map; | ||||
import java.util.Properties; | import java.util.Properties; | ||||
import java.util.Set; | import java.util.Set; | ||||
import java.security.CodeSource; | |||||
import org.apache.aut.converter.Converter; | import org.apache.aut.converter.Converter; | ||||
import org.apache.aut.converter.ConverterException; | import org.apache.aut.converter.ConverterException; | ||||
import org.apache.myrmidon.api.TaskContext; | import org.apache.myrmidon.api.TaskContext; | ||||
@@ -41,6 +40,7 @@ public class Ant1CompatProject extends Project | |||||
public static final String ANT1_TASK_PREFIX = "ant1."; | public static final String ANT1_TASK_PREFIX = "ant1."; | ||||
public static final String MYRMIDON_PROJECT_PROP = | public static final String MYRMIDON_PROJECT_PROP = | ||||
org.apache.myrmidon.interfaces.model.Project.PROJECT; | org.apache.myrmidon.interfaces.model.Project.PROJECT; | ||||
public static final String ANT1_PROJECT_PROP = "ant1.project"; | |||||
private static String javaclasspath; | private static String javaclasspath; | ||||
@@ -74,7 +74,7 @@ public class Ant1CompatProject extends Project | |||||
setBaseDir( m_context.getBaseDirectory() ); | setBaseDir( m_context.getBaseDirectory() ); | ||||
String projectName = | String projectName = | ||||
(String) m_context.getProperty( MYRMIDON_PROJECT_PROP ); | |||||
(String)m_context.getProperty( MYRMIDON_PROJECT_PROP ); | |||||
if( projectName != null ) | if( projectName != null ) | ||||
{ | { | ||||
setName( projectName ); | setName( projectName ); | ||||
@@ -27,7 +27,6 @@ import org.apache.myrmidon.api.TaskException; | |||||
public class Task extends OriginalAnt1Task | public class Task extends OriginalAnt1Task | ||||
implements org.apache.myrmidon.api.Task, Configurable | implements org.apache.myrmidon.api.Task, Configurable | ||||
{ | { | ||||
private static final String ANT1_PROJECT_PROP = "ant1.project"; | |||||
protected TaskContext m_context; | protected TaskContext m_context; | ||||
/** | /** | ||||
@@ -45,11 +44,11 @@ public class Task extends OriginalAnt1Task | |||||
// Create/recontextualise the Ant1 Project. | // Create/recontextualise the Ant1 Project. | ||||
Ant1CompatProject project = | Ant1CompatProject project = | ||||
(Ant1CompatProject)context.getProperty( ANT1_PROJECT_PROP ); | |||||
(Ant1CompatProject)context.getProperty( Ant1CompatProject.ANT1_PROJECT_PROP ); | |||||
if( project == null ) | if( project == null ) | ||||
{ | { | ||||
project = createProject(); | project = createProject(); | ||||
m_context.setProperty( ANT1_PROJECT_PROP, project ); | |||||
m_context.setProperty( Ant1CompatProject.ANT1_PROJECT_PROP, project ); | |||||
} | } | ||||
else | else | ||||
{ | { | ||||
@@ -0,0 +1,238 @@ | |||||
/* | |||||
* Copyright (C) The Apache Software Foundation. All rights reserved. | |||||
* | |||||
* This software is published under the terms of the Apache Software License | |||||
* version 1.1, a copy of which has been included with this distribution in | |||||
* the LICENSE.txt file. | |||||
*/ | |||||
package org.apache.tools.ant.taskdefs; | |||||
import java.util.Iterator; | |||||
import java.util.Vector; | |||||
import org.apache.avalon.framework.configuration.Configuration; | |||||
import org.apache.avalon.framework.configuration.DefaultConfiguration; | |||||
import org.apache.myrmidon.api.TaskException; | |||||
import org.apache.myrmidon.interfaces.executor.ExecutionFrame; | |||||
import org.apache.myrmidon.interfaces.executor.Executor; | |||||
import org.apache.tools.ant.Ant1CompatProject; | |||||
import org.apache.tools.ant.BuildException; | |||||
import org.apache.tools.ant.Task; | |||||
/** | |||||
* A base class for Ant1 versions of <ant> and <antcall> tasks, | |||||
* which delegate to the Myrmidon versions of these tasks. | |||||
* | |||||
* @author <a href="mailto:darrell@apache.org">Darrell DeBoer</a> | |||||
* @version $Revision$ $Date$ | |||||
*/ | |||||
public abstract class AbstractAnt1AntTask | |||||
extends Task | |||||
{ | |||||
/** the target to call if any */ | |||||
private String target = null; | |||||
/** should we inherit properties from the parent ? */ | |||||
private boolean inheritAll = true; | |||||
/** the properties to pass to the new project */ | |||||
private Vector properties = new Vector(); | |||||
/** the references to pass to the new project */ | |||||
private Vector references = new Vector(); | |||||
/** | |||||
* If true, inherit all properties from parent Project | |||||
* If false, inherit only userProperties and those defined | |||||
* inside the ant call itself | |||||
*/ | |||||
public void setInheritAll( boolean value ) | |||||
{ | |||||
inheritAll = value; | |||||
} | |||||
/** | |||||
* set the target to execute. If none is defined it will | |||||
* execute the default target of the build file | |||||
*/ | |||||
public void setTarget( String s ) | |||||
{ | |||||
this.target = s; | |||||
} | |||||
/** | |||||
* Create a nested property (ant) or param (antcall) element. | |||||
*/ | |||||
protected Property doCreateProperty() | |||||
{ | |||||
Property p = new Property( true ); | |||||
properties.addElement( p ); | |||||
return p; | |||||
} | |||||
/** | |||||
* create a reference element that identifies a data type that | |||||
* should be carried over to the new project. | |||||
*/ | |||||
public void addReference( Reference r ) | |||||
{ | |||||
references.addElement( r ); | |||||
} | |||||
/** | |||||
* Helper class that implements the nested <reference> | |||||
* element of <ant> and <antcall>. | |||||
*/ | |||||
public static class Reference | |||||
extends org.apache.tools.ant.types.Reference | |||||
{ | |||||
public Reference() | |||||
{ | |||||
super(); | |||||
} | |||||
private String targetid = null; | |||||
public void setToRefid( String targetid ) | |||||
{ | |||||
this.targetid = targetid; | |||||
} | |||||
public String getToRefid() | |||||
{ | |||||
return targetid; | |||||
} | |||||
} | |||||
/** | |||||
* Removes the Ant1CompatProject from the properties, builds a TaskModel for | |||||
* executing the Myrmidon task, and executes that TaskModel. | |||||
* @throws BuildException on error | |||||
*/ | |||||
public void execute() throws BuildException | |||||
{ | |||||
Object ant1project = unsetAnt1Project(); | |||||
try | |||||
{ | |||||
Configuration antConfig = constructTaskModel(); | |||||
executeTask( antConfig ); | |||||
} | |||||
finally | |||||
{ | |||||
resetAnt1Project( ant1project ); | |||||
} | |||||
} | |||||
/** | |||||
* Executes the Myrmidon task detailed in the TaskModel provided. | |||||
* @param taskModel the TaskModel for the task to execute. | |||||
*/ | |||||
private void executeTask( Configuration taskModel ) | |||||
{ | |||||
try | |||||
{ | |||||
Executor executor = (Executor)m_context.getService( Executor.class ); | |||||
ExecutionFrame frame = | |||||
(ExecutionFrame)m_context.getService( ExecutionFrame.class ); | |||||
executor.execute( taskModel, frame ); | |||||
} | |||||
catch( TaskException e ) | |||||
{ | |||||
throw new BuildException( e ); | |||||
} | |||||
} | |||||
/** | |||||
* Removes the Ant1CompatProject from the TaskContext properties. | |||||
* @return the removed project | |||||
* @throws BuildException | |||||
*/ | |||||
private Object unsetAnt1Project() throws BuildException | |||||
{ | |||||
Object ant1project = null; | |||||
try | |||||
{ | |||||
ant1project = | |||||
m_context.getProperty( Ant1CompatProject.ANT1_PROJECT_PROP ); | |||||
m_context.setProperty( Ant1CompatProject.ANT1_PROJECT_PROP, null ); | |||||
} | |||||
catch( TaskException e ) | |||||
{ | |||||
throw new BuildException( e ); | |||||
} | |||||
return ant1project; | |||||
} | |||||
/** | |||||
* Adds the Ant1CompatProject back into the TaskContext properties. | |||||
* @param ant1project the project to add. | |||||
* @throws BuildException | |||||
*/ | |||||
private void resetAnt1Project( Object ant1project ) throws BuildException | |||||
{ | |||||
try | |||||
{ | |||||
m_context.setProperty( Ant1CompatProject.ANT1_PROJECT_PROP, | |||||
ant1project ); | |||||
} | |||||
catch( TaskException e ) | |||||
{ | |||||
throw new BuildException( e ); | |||||
} | |||||
} | |||||
/** | |||||
* Builds the TaskModel for executing the Myrmidon version of a task. | |||||
* @return a Configuration containing the TaskModel | |||||
*/ | |||||
protected Configuration constructTaskModel() | |||||
{ | |||||
DefaultConfiguration antConfig = buildTaskModel(); | |||||
antConfig.setAttribute( "inherit-all", String.valueOf( inheritAll ) ); | |||||
// Ignore inheritRefs for now ( inheritAll == inheritRefs ) | |||||
if( target != null ) | |||||
{ | |||||
antConfig.setAttribute( "target", target ); | |||||
} | |||||
addProperties( antConfig ); | |||||
addReferences( antConfig ); | |||||
return antConfig; | |||||
} | |||||
/** | |||||
* Create the Myrmidon TaskModel, and configure with subclass-specific config. | |||||
*/ | |||||
protected abstract DefaultConfiguration buildTaskModel(); | |||||
/** | |||||
* Adds all defined properties to the supplied Task model. | |||||
* @param taskModel | |||||
*/ | |||||
protected void addProperties( DefaultConfiguration taskModel ) | |||||
{ | |||||
// Add all of the properties. | |||||
Iterator iter = properties.iterator(); | |||||
while( iter.hasNext() ) | |||||
{ | |||||
DefaultConfiguration param = new DefaultConfiguration( "param", "" ); | |||||
Property property = (Property)iter.next(); | |||||
param.setAttribute( "name", property.getName() ); | |||||
param.setAttribute( "value", property.getValue() ); | |||||
taskModel.addChild( param ); | |||||
} | |||||
} | |||||
/** | |||||
* Adds all defined references to the supplied Task model. | |||||
* @param taskModel | |||||
*/ | |||||
protected void addReferences( DefaultConfiguration taskModel ) | |||||
{ | |||||
// TODO: Handle references. | |||||
} | |||||
} |
@@ -54,86 +54,47 @@ | |||||
package org.apache.tools.ant.taskdefs; | package org.apache.tools.ant.taskdefs; | ||||
import org.apache.tools.ant.Task; | |||||
import org.apache.tools.ant.BuildException; | |||||
import org.apache.tools.ant.util.FileUtils; | |||||
import org.apache.avalon.framework.configuration.DefaultConfiguration; | |||||
import org.apache.avalon.framework.configuration.Configuration; | |||||
import org.apache.myrmidon.interfaces.executor.Executor; | |||||
import org.apache.myrmidon.interfaces.executor.ExecutionFrame; | |||||
import org.apache.myrmidon.api.TaskException; | |||||
import java.io.File; | import java.io.File; | ||||
import java.util.Vector; | |||||
import java.util.Iterator; | |||||
import org.apache.avalon.framework.configuration.DefaultConfiguration; | |||||
import org.apache.tools.ant.util.FileUtils; | |||||
/** | /** | ||||
* Call Ant in a sub-project. | |||||
* | |||||
* <pre> | |||||
* <target name="foo" depends="init"> | |||||
* <ant antfile="build.xml" target="bar" > | |||||
* <property name="property1" value="aaaaa" /> | |||||
* <property name="foo" value="baz" /> | |||||
* </ant></SPAN> | |||||
* </target></SPAN> | |||||
* | |||||
* <target name="bar" depends="init"> | |||||
* <echo message="prop is ${property1} ${foo}" /> | |||||
* </target> | |||||
* </pre> | |||||
* | |||||
* Ant1Compat version of <ant>, which delegates to the Myrmidon version. | |||||
* | * | ||||
* @author costin@dnt.ro | * @author costin@dnt.ro | ||||
* @author <a href="mailto:darrell@apache.org">Darrell DeBoer</a> | * @author <a href="mailto:darrell@apache.org">Darrell DeBoer</a> | ||||
*/ | */ | ||||
public class Ant extends Task { | |||||
public class Ant | |||||
extends AbstractAnt1AntTask | |||||
{ | |||||
/** the basedir where is executed the build file */ | /** the basedir where is executed the build file */ | ||||
private File dir = null; | private File dir = null; | ||||
/** the build.xml file (can be absolute) in this case dir will be ignored */ | /** the build.xml file (can be absolute) in this case dir will be ignored */ | ||||
private String antFile = null; | private String antFile = null; | ||||
/** the target to call if any */ | |||||
private String target = null; | |||||
/** the output */ | /** the output */ | ||||
private String output = null; | private String output = null; | ||||
/** should we inherit properties from the parent ? */ | |||||
private boolean inheritAll = true; | |||||
/** should we inherit references from the parent ? */ | /** should we inherit references from the parent ? */ | ||||
private boolean inheritRefs = false; | private boolean inheritRefs = false; | ||||
/** the properties to pass to the new project */ | |||||
private Vector properties = new Vector(); | |||||
/** the references to pass to the new project */ | |||||
private Vector references = new Vector(); | |||||
/** | |||||
* If true, inherit all properties from parent Project | |||||
* If false, inherit only userProperties and those defined | |||||
* inside the ant call itself | |||||
*/ | |||||
public void setInheritAll(boolean value) { | |||||
inheritAll = value; | |||||
} | |||||
/** | /** | ||||
* If true, inherit all references from parent Project | * If true, inherit all references from parent Project | ||||
* If false, inherit only those defined | * If false, inherit only those defined | ||||
* inside the ant call itself | * inside the ant call itself | ||||
*/ | */ | ||||
public void setInheritRefs(boolean value) { | |||||
public void setInheritRefs( boolean value ) | |||||
{ | |||||
inheritRefs = value; | inheritRefs = value; | ||||
} | } | ||||
/** | /** | ||||
* ... | * ... | ||||
*/ | */ | ||||
public void setDir(File d) { | |||||
public void setDir( File d ) | |||||
{ | |||||
this.dir = d; | this.dir = d; | ||||
} | } | ||||
@@ -142,159 +103,50 @@ public class Ant extends Task { | |||||
* If it is absolute, <tt>dir</tt> will be ignored, if it is | * If it is absolute, <tt>dir</tt> will be ignored, if it is | ||||
* relative it will be resolved relative to <tt>dir</tt>. | * relative it will be resolved relative to <tt>dir</tt>. | ||||
*/ | */ | ||||
public void setAntfile(String s) { | |||||
public void setAntfile( String s ) | |||||
{ | |||||
// @note: it is a string and not a file to handle relative/absolute | // @note: it is a string and not a file to handle relative/absolute | ||||
// otherwise a relative file will be resolved based on the current | // otherwise a relative file will be resolved based on the current | ||||
// basedir. | // basedir. | ||||
this.antFile = s; | this.antFile = s; | ||||
} | } | ||||
/** | |||||
* set the target to execute. If none is defined it will | |||||
* execute the default target of the build file | |||||
*/ | |||||
public void setTarget(String s) { | |||||
this.target = s; | |||||
} | |||||
public void setOutput(String s) { | |||||
public void setOutput( String s ) | |||||
{ | |||||
this.output = s; | this.output = s; | ||||
} | } | ||||
/** create a property to pass to the new project as a 'user property' */ | /** create a property to pass to the new project as a 'user property' */ | ||||
public Property createProperty() { | |||||
Property p = new Property(true); | |||||
properties.addElement( p ); | |||||
return p; | |||||
} | |||||
/** | |||||
* create a reference element that identifies a data type that | |||||
* should be carried over to the new project. | |||||
*/ | |||||
public void addReference(Reference r) { | |||||
references.addElement(r); | |||||
} | |||||
/** | |||||
* Helper class that implements the nested <reference> | |||||
* element of <ant> and <antcall>. | |||||
*/ | |||||
public static class Reference | |||||
extends org.apache.tools.ant.types.Reference { | |||||
public Reference() {super();} | |||||
private String targetid=null; | |||||
public void setToRefid(String targetid) { this.targetid=targetid; } | |||||
public String getToRefid() { return targetid; } | |||||
public Property createProperty() | |||||
{ | |||||
return doCreateProperty(); | |||||
} | } | ||||
/** | /** | ||||
* Called by the project to let the task do its work. This method may be | |||||
* called more than once, if the task is invoked more than once. | |||||
* For example, | |||||
* if target1 and target2 both depend on target3, then running | |||||
* "ant target1 target2" will run all tasks in target3 twice. | |||||
* | |||||
* @exception BuildException if something goes wrong with the build | |||||
* Construct a TaskModel for the Myrmidon <ant> task, and configure it | |||||
* with sub-class specific values (antfile). | |||||
* @return the TaskModel | |||||
*/ | */ | ||||
public void execute() throws BuildException | |||||
{ | |||||
Object ant1project = unsetProject(); | |||||
try | |||||
{ | |||||
Configuration antConfig = buildAntTaskConfiguration(); | |||||
executeTask( antConfig ); | |||||
} | |||||
finally | |||||
{ | |||||
resetProject( ant1project ); | |||||
} | |||||
} | |||||
private void executeTask( Configuration antConfig ) | |||||
{ | |||||
try | |||||
{ | |||||
Executor executor = (Executor) m_context.getService( Executor.class ); | |||||
ExecutionFrame frame = | |||||
(ExecutionFrame) m_context.getService( ExecutionFrame.class ); | |||||
executor.execute( antConfig, frame ); | |||||
} | |||||
catch( TaskException e ) | |||||
{ | |||||
throw new BuildException( e ); | |||||
} | |||||
} | |||||
private Configuration buildAntTaskConfiguration() | |||||
protected DefaultConfiguration buildTaskModel() | |||||
{ | { | ||||
DefaultConfiguration antConfig = new DefaultConfiguration( "ant", "" ); | DefaultConfiguration antConfig = new DefaultConfiguration( "ant", "" ); | ||||
antConfig.setAttribute( "inherit-all", String.valueOf( inheritAll ) ); | |||||
// Ignore inheritRefs for now ( inheritAll == inheritRefs ) | |||||
if ( target != null ) | |||||
{ | |||||
antConfig.setAttribute( "target", target ); | |||||
} | |||||
// Get the "file" value. | // Get the "file" value. | ||||
if (antFile == null) { | |||||
if( antFile == null ) | |||||
{ | |||||
antFile = "build.xml"; | antFile = "build.xml"; | ||||
} | } | ||||
if ( dir == null ) | |||||
if( dir == null ) | |||||
{ | { | ||||
dir = project.getBaseDir(); | dir = project.getBaseDir(); | ||||
} | } | ||||
File file = FileUtils.newFileUtils().resolveFile(dir, antFile); | |||||
File file = FileUtils.newFileUtils().resolveFile( dir, antFile ); | |||||
antFile = file.getAbsolutePath(); | antFile = file.getAbsolutePath(); | ||||
antConfig.setAttribute( "file", antFile ); | antConfig.setAttribute( "file", antFile ); | ||||
// Add all of the properties. | |||||
Iterator iter = properties.iterator(); | |||||
while( iter.hasNext() ) | |||||
{ | |||||
DefaultConfiguration param = new DefaultConfiguration( "param", "" ); | |||||
Property property = (Property)iter.next(); | |||||
param.setAttribute( "name", property.getName() ); | |||||
param.setAttribute( "value", property.getValue() ); | |||||
antConfig.addChild( param ); | |||||
} | |||||
return antConfig; | return antConfig; | ||||
} | } | ||||
private void resetProject( Object ant1project ) throws BuildException | |||||
{ | |||||
try | |||||
{ | |||||
m_context.setProperty( "ant1.project", ant1project ); | |||||
} | |||||
catch( TaskException e ) | |||||
{ | |||||
throw new BuildException( e ); | |||||
} | |||||
} | |||||
private Object unsetProject() throws BuildException | |||||
{ | |||||
Object ant1project = null; | |||||
try | |||||
{ | |||||
ant1project = m_context.getProperty( "ant1.project" ); | |||||
m_context.setProperty( "ant1.project", null ); | |||||
} | |||||
catch( TaskException e ) | |||||
{ | |||||
throw new BuildException( e ); | |||||
} | |||||
return ant1project; | |||||
} | |||||
} | } |
@@ -0,0 +1,36 @@ | |||||
/* | |||||
* Copyright (C) The Apache Software Foundation. All rights reserved. | |||||
* | |||||
* This software is published under the terms of the Apache Software License | |||||
* version 1.1, a copy of which has been included with this distribution in | |||||
* the LICENSE.txt file. | |||||
*/ | |||||
package org.apache.tools.ant.taskdefs; | |||||
import org.apache.avalon.framework.configuration.DefaultConfiguration; | |||||
/** | |||||
* The Ant1Compat version of the <antcall> task, which delegates to the | |||||
* Myrmidon version. | |||||
* | |||||
* @author <a href="mailto:darrell@apache.org">Darrell DeBoer</a> | |||||
* @version $Revision$ $Date$ | |||||
*/ | |||||
public class CallTarget extends AbstractAnt1AntTask | |||||
{ | |||||
/** | |||||
* Properties are referred to as Parameters in <antcall> | |||||
*/ | |||||
public Property createParam() | |||||
{ | |||||
return doCreateProperty(); | |||||
} | |||||
/** | |||||
* The only configuration not done by base class is the task name. | |||||
*/ | |||||
protected DefaultConfiguration buildTaskModel() | |||||
{ | |||||
return new DefaultConfiguration( "ant-call", "" ); | |||||
} | |||||
} |
@@ -37,6 +37,11 @@ public abstract class AbstractAntTask extends AbstractTask | |||||
* will use default in specified build file. | * will use default in specified build file. | ||||
*/ | */ | ||||
private String m_target; | private String m_target; | ||||
/** | |||||
* The parameters/properties which will be passed to the workspace | |||||
* for the target execution. | |||||
*/ | |||||
private final ArrayList m_parameters = new ArrayList(); | private final ArrayList m_parameters = new ArrayList(); | ||||
/** | /** | ||||
@@ -96,8 +96,31 @@ public class Ant1CompatTestCase | |||||
"test-prop = [set in calling task]" ); | "test-prop = [set in calling task]" ); | ||||
tracker.addExpectedMessage( "property-test", | tracker.addExpectedMessage( "property-test", | ||||
"test-prop = [set in calling target]" ); | "test-prop = [set in calling target]" ); | ||||
// executeTarget( projectFile, "ant-setprops-test", tracker ); | |||||
tracker.addExpectedMessage( "property-test", | |||||
"test-prop = [test-value]" ); | |||||
// executeTarget( projectFile, "ant-setprops-test", tracker ); | |||||
executeTarget( projectFile, "ant-setprops-test" ); | executeTarget( projectFile, "ant-setprops-test" ); | ||||
} | } | ||||
public void testAntcallTask() throws Exception | |||||
{ | |||||
final File projectFile = getTestResource( "antcall-task-test.xml" ); | |||||
// TODO - Get the <ant> project listeners working, so we can test log messages. | |||||
LogMessageTracker tracker = new LogMessageTracker(); | |||||
tracker.addExpectedMessage( "default-target", | |||||
"In default target." ); | |||||
tracker.addExpectedMessage( "antcall-target", | |||||
"In antcall-target: test-prop = [test-value]" ); | |||||
tracker.addExpectedMessage( "antcall-target", | |||||
"In antcall-target: test-prop = [set in calling task]" ); | |||||
tracker.addExpectedMessage( "antcall-target", | |||||
"In antcall-target: test-prop = [set in calling target]" ); | |||||
tracker.addExpectedMessage( "antcall-target", | |||||
"In antcall-target: test-prop = [test-value]" ); | |||||
// executeTarget( projectFile, "ant-samefile-test", tracker ); | |||||
executeTarget( projectFile, "antcall-test" ); | |||||
} | |||||
} | } |
@@ -1,5 +1,4 @@ | |||||
<project name="ant-task-test" | <project name="ant-task-test" | ||||
description="Tests for the <ant> task in the Ant1 Compatibility layer." | |||||
default="default-target"> | default="default-target"> | ||||
<target name="default-target"> | <target name="default-target"> | ||||
@@ -47,6 +46,10 @@ | |||||
<!-- Override property in containing project --> | <!-- Override property in containing project --> | ||||
<property name="test-prop" value="set in calling target"/> | <property name="test-prop" value="set in calling target"/> | ||||
<ant antfile="subdir/build.xml" target="property-test"/> | <ant antfile="subdir/build.xml" target="property-test"/> | ||||
<!-- Test inherit-all = false --> | |||||
<ant antfile="subdir/build.xml" target="property-test" | |||||
inheritall="false"/> | |||||
</target> | </target> | ||||
</project> | |||||
</project> |
@@ -0,0 +1,34 @@ | |||||
<project name="antcall-task-test" | |||||
default="default-target"> | |||||
<target name="default-target"> | |||||
<echo message="In default target."/> | |||||
</target> | |||||
<target name="antcall-target"> | |||||
<property name="test-prop" value="test-value"/> | |||||
<echo message="In antcall-target: test-prop = [${test-prop}]"/> | |||||
</target> | |||||
<!-- Basic <antcall> --> | |||||
<target name="antcall-test"> | |||||
<!-- <antcall with default target --> | |||||
<antcall/> | |||||
<!-- <antcall> with defined target (No property overrides) --> | |||||
<antcall target="antcall-target"/> | |||||
<!-- Override property within task def --> | |||||
<antcall target="antcall-target"> | |||||
<param name="test-prop" value="set in calling task"/> | |||||
</antcall> | |||||
<!-- Override property in containing project --> | |||||
<property name="test-prop" value="set in calling target"/> | |||||
<antcall target="antcall-target"/> | |||||
<!-- Test inherit-all = false --> | |||||
<antcall target="antcall-target" inheritall="false"/> | |||||
</target> | |||||
</project> |
@@ -1,5 +1,4 @@ | |||||
<project name="ant1compat-test" | <project name="ant1compat-test" | ||||
description="Basic tests for the Ant1 Compatibility layer." | |||||
default="echo-test"> | default="echo-test"> | ||||
<property name="prop-1" value="value-1"/> | <property name="prop-1" value="value-1"/> | ||||
@@ -19,4 +18,4 @@ | |||||
<echo message="Omit$, replace$$, but keep ${} and $"/> | <echo message="Omit$, replace$$, but keep ${} and $"/> | ||||
</target> | </target> | ||||
</project> | |||||
</project> |
@@ -1,5 +1,4 @@ | |||||
<project name="if-unless-test" | <project name="if-unless-test" | ||||
description="Tests for if/unless functionality of the Ant1 Compatibility layer." | |||||
default="if-unless-tests"> | default="if-unless-tests"> | ||||
<target name="if-unless-tests" | <target name="if-unless-tests" | ||||
@@ -60,4 +59,4 @@ | |||||
<target name="if-with-unless-test-3" if="prop-set" unless="prop-set"> | <target name="if-with-unless-test-3" if="prop-set" unless="prop-set"> | ||||
<echo message="Ran target: if-with-unless-test-3"/> | <echo message="Ran target: if-with-unless-test-3"/> | ||||
</target> | </target> | ||||
</project> | |||||
</project> |