git-svn-id: https://svn.apache.org/repos/asf/ant/core/trunk@272458 13f79535-47bb-0310-9956-ffa450edef68master
| @@ -1,217 +0,0 @@ | |||||
| /* | |||||
| * 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.myrmidon; | |||||
| import java.io.File; | |||||
| import java.io.IOException; | |||||
| import junit.framework.TestCase; | |||||
| import org.apache.avalon.excalibur.i18n.Resources; | |||||
| import org.apache.avalon.excalibur.i18n.ResourceManager; | |||||
| import org.apache.avalon.framework.ExceptionUtil; | |||||
| import org.apache.avalon.framework.logger.Logger; | |||||
| import org.apache.myrmidon.frontends.BasicLogger; | |||||
| /** | |||||
| * A base class for Myrmidon tests. Provides utility methods for locating | |||||
| * test resources. | |||||
| * | |||||
| * @author <a href="mailto:adammurdoch@apache.org">Adam Murdoch</a> | |||||
| */ | |||||
| public abstract class AbstractMyrmidonTest | |||||
| extends TestCase | |||||
| { | |||||
| private final File m_testBaseDir; | |||||
| private final File m_baseDir; | |||||
| private Logger m_logger; | |||||
| public AbstractMyrmidonTest( final String name ) | |||||
| { | |||||
| super( name ); | |||||
| final String baseDirProp = System.getProperty( "test.basedir" ); | |||||
| m_baseDir = getCanonicalFile( new File( baseDirProp ) ); | |||||
| final String packagePath = getPackageName( getClass() ).replace( '.', File.separatorChar ); | |||||
| m_testBaseDir = getCanonicalFile( new File( m_baseDir, packagePath ) ); | |||||
| } | |||||
| /** | |||||
| * Locates the error message resources for a class. | |||||
| */ | |||||
| protected static final Resources getResourcesForTested( final Class clazz ) | |||||
| { | |||||
| String baseName = getPackageName( clazz ); | |||||
| if( baseName.endsWith( ".test" ) ) | |||||
| { | |||||
| baseName = baseName.substring( 0, baseName.length() - 5 ); | |||||
| } | |||||
| return ResourceManager.getBaseResources( baseName + ".Resources", AbstractMyrmidonTest.class.getClassLoader() ); | |||||
| } | |||||
| /** | |||||
| * Returns the name of the package containing a class. | |||||
| * | |||||
| * @return The . delimited package name, or an empty string if the class | |||||
| * is in the default package. | |||||
| */ | |||||
| protected static String getPackageName( final Class clazz ) | |||||
| { | |||||
| final Package pkg = clazz.getPackage(); | |||||
| if( null != pkg ) | |||||
| { | |||||
| return pkg.getName(); | |||||
| } | |||||
| final String name = clazz.getName(); | |||||
| if( -1 == name.lastIndexOf( "." ) ) | |||||
| { | |||||
| return ""; | |||||
| } | |||||
| else | |||||
| { | |||||
| return name.substring( 0, name.lastIndexOf( "." ) ); | |||||
| } | |||||
| } | |||||
| /** | |||||
| * Locates a test resource, and asserts that the resource exists | |||||
| * | |||||
| * @param name path of the resource, relative to this test's base directory. | |||||
| */ | |||||
| protected File getTestResource( final String name ) | |||||
| { | |||||
| return getTestResource( name, true ); | |||||
| } | |||||
| /** | |||||
| * Locates a test resource. | |||||
| * | |||||
| * @param name path of the resource, relative to this test's base directory. | |||||
| */ | |||||
| protected File getTestResource( final String name, final boolean mustExist ) | |||||
| { | |||||
| File file = new File( m_testBaseDir, name ); | |||||
| file = getCanonicalFile( file ); | |||||
| if( mustExist ) | |||||
| { | |||||
| assertTrue( "Test file \"" + file + "\" does not exist.", file.exists() ); | |||||
| } | |||||
| else | |||||
| { | |||||
| assertTrue( "Test file \"" + file + "\" should not exist.", !file.exists() ); | |||||
| } | |||||
| return file; | |||||
| } | |||||
| /** | |||||
| * Locates the base directory for this test. | |||||
| */ | |||||
| protected File getTestDirectory() | |||||
| { | |||||
| return m_testBaseDir; | |||||
| } | |||||
| /** | |||||
| * Locates a test directory, creating it if it does not exist. | |||||
| * | |||||
| * @param name path of the directory, relative to this test's base directory. | |||||
| */ | |||||
| protected File getTestDirectory( final String name ) | |||||
| { | |||||
| File file = new File( m_testBaseDir, name ); | |||||
| file = getCanonicalFile( file ); | |||||
| assertTrue( "Test directory \"" + file + "\" does not exist or is not a directory.", | |||||
| file.isDirectory() || file.mkdirs() ); | |||||
| return file; | |||||
| } | |||||
| /** | |||||
| * Returns the directory containing a Myrmidon install. | |||||
| */ | |||||
| protected File getInstallDirectory() | |||||
| { | |||||
| final File file = new File( m_baseDir, "dist" ); | |||||
| return getCanonicalFile( file ); | |||||
| } | |||||
| /** | |||||
| * Makes a file canonical | |||||
| */ | |||||
| private File getCanonicalFile( final File file ) | |||||
| { | |||||
| try | |||||
| { | |||||
| return file.getCanonicalFile(); | |||||
| } | |||||
| catch( IOException e ) | |||||
| { | |||||
| return file.getAbsoluteFile(); | |||||
| } | |||||
| } | |||||
| /** | |||||
| * Creates a logger. | |||||
| */ | |||||
| protected Logger getLogger() | |||||
| { | |||||
| if( m_logger == null ) | |||||
| { | |||||
| m_logger = new BasicLogger( "[test]", BasicLogger.LEVEL_WARN ); | |||||
| } | |||||
| return m_logger; | |||||
| } | |||||
| /** | |||||
| * Asserts that an exception chain contains the expected messages. | |||||
| * | |||||
| * @param messages The messages, in order. A null entry in this array | |||||
| * indicates that the message should be ignored. | |||||
| */ | |||||
| protected void assertSameMessage( final String[] messages, final Throwable throwable ) | |||||
| { | |||||
| Throwable current = throwable; | |||||
| for( int i = 0; i < messages.length; i++ ) | |||||
| { | |||||
| String message = messages[ i ]; | |||||
| assertNotNull( current ); | |||||
| if( message != null ) | |||||
| { | |||||
| assertEquals( message, current.getMessage() ); | |||||
| } | |||||
| // Get the next exception in the chain | |||||
| current = ExceptionUtil.getCause( current, true ); | |||||
| } | |||||
| } | |||||
| /** | |||||
| * Asserts that an exception contains the expected message. | |||||
| */ | |||||
| protected void assertSameMessage( final String message, final Throwable throwable ) | |||||
| { | |||||
| assertSameMessage( new String[]{message}, throwable ); | |||||
| } | |||||
| /** | |||||
| * Compares 2 objects for equality, nulls are equal. Used by the test | |||||
| * classes' equals() methods. | |||||
| */ | |||||
| public static boolean equals( final Object o1, final Object o2 ) | |||||
| { | |||||
| if( o1 == null && o2 == null ) | |||||
| { | |||||
| return true; | |||||
| } | |||||
| if( o1 == null || o2 == null ) | |||||
| { | |||||
| return false; | |||||
| } | |||||
| return o1.equals( o2 ); | |||||
| } | |||||
| } | |||||
| @@ -1,113 +0,0 @@ | |||||
| /* | |||||
| * 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.myrmidon; | |||||
| import java.io.File; | |||||
| import org.apache.myrmidon.frontends.EmbeddedAnt; | |||||
| import org.apache.myrmidon.listeners.ProjectListener; | |||||
| import org.apache.avalon.framework.ExceptionUtil; | |||||
| /** | |||||
| * A base class for test cases which need to execute projects. | |||||
| * | |||||
| * @author <a href="mailto:adammurdoch@apache.org">Adam Murdoch</a> | |||||
| * @version $Revision$ $Date$ | |||||
| */ | |||||
| public class AbstractProjectTest | |||||
| extends AbstractMyrmidonTest | |||||
| { | |||||
| public AbstractProjectTest( final String name ) | |||||
| { | |||||
| super( name ); | |||||
| } | |||||
| /** | |||||
| * Executes a target in a project, and asserts that it fails with the | |||||
| * given error message. | |||||
| */ | |||||
| protected void executeTargetExpectError( final File projectFile, | |||||
| final String targetName, | |||||
| final String message ) | |||||
| { | |||||
| executeTargetExpectError( projectFile, targetName, new String[]{message} ); | |||||
| } | |||||
| /** | |||||
| * Executes a target in a project, and asserts that it fails with the | |||||
| * given error messages. | |||||
| */ | |||||
| protected void executeTargetExpectError( final File projectFile, | |||||
| final String targetName, | |||||
| final String[] messages ) | |||||
| { | |||||
| try | |||||
| { | |||||
| executeTarget( projectFile, targetName, null ); | |||||
| fail( "target execution did not fail" ); | |||||
| } | |||||
| catch( Exception e ) | |||||
| { | |||||
| assertSameMessage( messages, e ); | |||||
| } | |||||
| } | |||||
| /** | |||||
| * Executes a target in a project, and asserts that it does not fail. | |||||
| */ | |||||
| protected void executeTarget( final File projectFile, final String targetName ) | |||||
| throws Exception | |||||
| { | |||||
| executeTarget( projectFile, targetName, null ); | |||||
| } | |||||
| /** | |||||
| * Executes a target in a project, and asserts that it does not fail. | |||||
| */ | |||||
| protected void executeTarget( final File projectFile, | |||||
| final String targetName, | |||||
| final ProjectListener listener ) | |||||
| throws Exception | |||||
| { | |||||
| final EmbeddedAnt embeddor = new EmbeddedAnt(); | |||||
| final TrackingProjectListener tracker = new TrackingProjectListener(); | |||||
| try | |||||
| { | |||||
| // Configure embeddor | |||||
| embeddor.setHomeDirectory( getInstallDirectory() ); | |||||
| embeddor.enableLogging( getLogger() ); | |||||
| embeddor.setSharedClassLoader( getClass().getClassLoader() ); | |||||
| embeddor.setProjectFile( projectFile.getAbsolutePath() ); | |||||
| embeddor.setProjectListener( null ); | |||||
| // Add a listener to make sure all is good | |||||
| embeddor.addProjectListener( tracker ); | |||||
| // Add supplied listener | |||||
| if( listener != null ) | |||||
| { | |||||
| embeddor.addProjectListener( listener ); | |||||
| } | |||||
| // Now execute the target | |||||
| embeddor.executeTargets( new String[] { targetName } ); | |||||
| } | |||||
| finally | |||||
| { | |||||
| embeddor.stop(); | |||||
| } | |||||
| // Make sure all expected events were delivered | |||||
| tracker.assertComplete(); | |||||
| if( listener instanceof TrackingProjectListener ) | |||||
| { | |||||
| ( (TrackingProjectListener)listener ).assertComplete(); | |||||
| } | |||||
| } | |||||
| } | |||||
| @@ -1,59 +0,0 @@ | |||||
| /* | |||||
| * 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.myrmidon; | |||||
| import java.util.ArrayList; | |||||
| import java.util.List; | |||||
| import org.apache.myrmidon.listeners.LogEvent; | |||||
| /** | |||||
| * Asserts that log messages are delivered in the correct order. | |||||
| * | |||||
| * @author <a href="mailto:adammurdoch@apache.org">Adam Murdoch</a> | |||||
| * @version $Revision$ $Date$ | |||||
| */ | |||||
| public class LogMessageTracker | |||||
| extends TrackingProjectListener | |||||
| { | |||||
| private List m_targets = new ArrayList(); | |||||
| private List m_messages = new ArrayList(); | |||||
| /** | |||||
| * Handles a log message. | |||||
| */ | |||||
| public void log( final LogEvent event ) | |||||
| { | |||||
| super.log( event ); | |||||
| // Pop the next expected message off the list, and make sure it | |||||
| // matches the message in the event | |||||
| assertTrue( "Unexpected log message", m_targets.size() > 0 && m_messages.size() > 0 ); | |||||
| assertEquals( "Unexpected log message", m_targets.remove( 0 ), event.getTargetName() ); | |||||
| assertEquals( "Unexpected log message", m_messages.remove( 0 ), event.getMessage() ); | |||||
| } | |||||
| /** | |||||
| * Asserts that all the log messages were delivered. | |||||
| */ | |||||
| public void assertComplete() | |||||
| { | |||||
| super.assertComplete(); | |||||
| // Make sure that all log messages were delivered | |||||
| assertTrue( "Log message not delivered", m_targets.size() == 0 && m_messages.size() == 0 ); | |||||
| } | |||||
| /** | |||||
| * Adds an expected log message. | |||||
| */ | |||||
| public void addExpectedMessage( String target, String message ) | |||||
| { | |||||
| m_targets.add( target ); | |||||
| m_messages.add( message ); | |||||
| } | |||||
| } | |||||
| @@ -1,121 +0,0 @@ | |||||
| /* | |||||
| * 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.myrmidon; | |||||
| import junit.framework.Assert; | |||||
| import org.apache.myrmidon.listeners.LogEvent; | |||||
| import org.apache.myrmidon.listeners.ProjectEvent; | |||||
| import org.apache.myrmidon.listeners.ProjectListener; | |||||
| import org.apache.myrmidon.listeners.TargetEvent; | |||||
| import org.apache.myrmidon.listeners.TaskEvent; | |||||
| /** | |||||
| * A project listener that asserts that it receives a particular sequence of | |||||
| * events. | |||||
| * | |||||
| * @author <a href="mailto:adammurdoch@apache.org">Adam Murdoch</a> | |||||
| * @version $Revision$ $Date$ | |||||
| */ | |||||
| public class TrackingProjectListener | |||||
| extends Assert | |||||
| implements ProjectListener | |||||
| { | |||||
| private String m_rootProject; | |||||
| private String m_currentProject; | |||||
| private String m_currentTarget; | |||||
| private String m_currentTask; | |||||
| /** | |||||
| * Notify the listener that a project is about to start. | |||||
| */ | |||||
| public void projectStarted( final ProjectEvent event ) | |||||
| { | |||||
| assertNull( "Project already started", m_rootProject ); | |||||
| m_rootProject = event.getProjectName(); | |||||
| } | |||||
| /** | |||||
| * Notify the listener that a project has finished. | |||||
| */ | |||||
| public void projectFinished( final ProjectEvent event ) | |||||
| { | |||||
| assertEquals( "Mismatched project name", m_rootProject, event.getProjectName() ); | |||||
| m_rootProject = null; | |||||
| assertNull( "Target not started", m_currentTarget ); | |||||
| } | |||||
| /** | |||||
| * Notify the listener that a target is about to start. | |||||
| */ | |||||
| public void targetStarted( final TargetEvent event ) | |||||
| { | |||||
| assertNotNull( "Project not started", m_rootProject ); | |||||
| assertNull( "Target already started", m_currentTarget ); | |||||
| m_currentProject = event.getProjectName(); | |||||
| m_currentTarget = event.getTargetName(); | |||||
| } | |||||
| /** | |||||
| * Notify the listener that a target has finished. | |||||
| */ | |||||
| public void targetFinished( final TargetEvent event ) | |||||
| { | |||||
| assertEquals( "Mismatched project name", m_currentProject, event.getProjectName() ); | |||||
| assertEquals( "Mismatched target name", m_currentTarget, event.getTargetName() ); | |||||
| m_currentProject = null; | |||||
| m_currentTarget = null; | |||||
| assertNull( "Task not finished", m_currentTask ); | |||||
| } | |||||
| /** | |||||
| * Notify the listener that a task is about to start. | |||||
| */ | |||||
| public void taskStarted( final TaskEvent event ) | |||||
| { | |||||
| assertEquals( "Mismatched project name", m_currentProject, event.getProjectName() ); | |||||
| assertEquals( "Mismatched target name", m_currentTarget, event.getTargetName() ); | |||||
| assertNull( "Task already started", m_currentTask ); | |||||
| m_currentTask = event.getTaskName(); | |||||
| } | |||||
| /** | |||||
| * Notify the listener that a task has finished. | |||||
| */ | |||||
| public void taskFinished( final TaskEvent event ) | |||||
| { | |||||
| assertEquals( "Mismatched project name", m_currentProject, event.getProjectName() ); | |||||
| assertEquals( "Mismatched target name", m_currentTarget, event.getTargetName() ); | |||||
| assertEquals( "Mismatched task name", m_currentTask, event.getTaskName() ); | |||||
| m_currentTask = null; | |||||
| } | |||||
| /** | |||||
| * Notify listener of log message event. | |||||
| */ | |||||
| public void log( final LogEvent event ) | |||||
| { | |||||
| assertEquals( "Mismatched project name", m_currentProject, event.getProjectName() ); | |||||
| assertEquals( "Mismatched target name", m_currentTarget, event.getTargetName() ); | |||||
| assertEquals( "Mismatched task name", m_currentTask, event.getTaskName() ); | |||||
| assertNull( "Unexpected build error", event.getThrowable() ); | |||||
| } | |||||
| /** | |||||
| * Asserts that the listener has finished. | |||||
| */ | |||||
| public void assertComplete() | |||||
| { | |||||
| assertNull( "Task not finished", m_currentTask ); | |||||
| assertNull( "Target not finished", m_currentTarget ); | |||||
| assertNull( "Target not finished", m_currentProject ); | |||||
| assertNull( "Project not finished", m_rootProject ); | |||||
| } | |||||
| } | |||||
| @@ -1,37 +0,0 @@ | |||||
| /* | |||||
| * 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.myrmidon.framework.conditions.test; | |||||
| import java.io.File; | |||||
| import org.apache.myrmidon.AbstractProjectTest; | |||||
| /** | |||||
| * Test cases for the <and> condition. | |||||
| * | |||||
| * @author <a href="mailto:adammurdoch@apache.org">Adam Murdoch</a> | |||||
| * @version $Revision$ $Date$ | |||||
| */ | |||||
| public class AndConditionTestCase | |||||
| extends AbstractProjectTest | |||||
| { | |||||
| public AndConditionTestCase( final String name ) | |||||
| { | |||||
| super( name ); | |||||
| } | |||||
| /** | |||||
| * Tests evaluation of the <and> condition. | |||||
| */ | |||||
| public void testEvaluation() throws Exception | |||||
| { | |||||
| final File projectFile = getTestResource( "and.ant" ); | |||||
| executeTarget( projectFile, "empty" ); | |||||
| executeTarget( projectFile, "truth-table" ); | |||||
| executeTarget( projectFile, "lazy" ); | |||||
| } | |||||
| } | |||||
| @@ -1,50 +0,0 @@ | |||||
| /* | |||||
| * 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.myrmidon.framework.conditions.test; | |||||
| import org.apache.myrmidon.api.AbstractTask; | |||||
| import org.apache.myrmidon.api.TaskException; | |||||
| import org.apache.myrmidon.framework.conditions.Condition; | |||||
| /** | |||||
| * A simple assert task, used for testing conditions. | |||||
| * | |||||
| * @author <a href="mailto:adammurdoch@apache.org">Adam Murdoch</a> | |||||
| * @version $Revision$ $Date$ | |||||
| * | |||||
| * @ant.task name="assert" | |||||
| */ | |||||
| public class ConditionTestTask | |||||
| extends AbstractTask | |||||
| { | |||||
| private boolean m_expected = true; | |||||
| private Condition m_condition; | |||||
| public void setExpected( final boolean expected ) | |||||
| { | |||||
| m_expected = expected; | |||||
| } | |||||
| public void add( final Condition condition ) | |||||
| { | |||||
| m_condition = condition; | |||||
| } | |||||
| /** | |||||
| * Execute task. | |||||
| */ | |||||
| public void execute() | |||||
| throws TaskException | |||||
| { | |||||
| final boolean result = m_condition.evaluate( getContext() ); | |||||
| if( result != m_expected ) | |||||
| { | |||||
| throw new TaskException( "Expected " + m_expected + ", got " + result ); | |||||
| } | |||||
| } | |||||
| } | |||||
| @@ -1,48 +0,0 @@ | |||||
| /* | |||||
| * 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.myrmidon.framework.conditions.test; | |||||
| import java.io.File; | |||||
| import org.apache.avalon.excalibur.i18n.Resources; | |||||
| import org.apache.myrmidon.AbstractProjectTest; | |||||
| import org.apache.myrmidon.framework.conditions.IsSetCondition; | |||||
| /** | |||||
| * Test cases for the <is-set> condition. | |||||
| * | |||||
| * @author <a href="mailto:adammurdoch@apache.org">Adam Murdoch</a> | |||||
| * @version $Revision$ $Date$ | |||||
| */ | |||||
| public class IsSetConditionTestCase | |||||
| extends AbstractProjectTest | |||||
| { | |||||
| public IsSetConditionTestCase( final String name ) | |||||
| { | |||||
| super( name ); | |||||
| } | |||||
| /** | |||||
| * Test cases for <is-set> evaluation. | |||||
| */ | |||||
| public void testEvaluation() throws Exception | |||||
| { | |||||
| final File projectFile = getTestResource( "isset.ant" ); | |||||
| executeTarget( projectFile, "set" ); | |||||
| executeTarget( projectFile, "set2true" ); | |||||
| executeTarget( projectFile, "set2false" ); | |||||
| executeTarget( projectFile, "not-set" ); | |||||
| Resources res = getResourcesForTested( IsSetCondition.class ); | |||||
| final String[] messages = { | |||||
| null, | |||||
| res.getString( "isset.no-property.error" ) | |||||
| }; | |||||
| executeTargetExpectError( projectFile, "no-prop-name", messages ); | |||||
| } | |||||
| } | |||||
| @@ -1,51 +0,0 @@ | |||||
| /* | |||||
| * 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.myrmidon.framework.conditions.test; | |||||
| import java.io.File; | |||||
| import org.apache.avalon.excalibur.i18n.Resources; | |||||
| import org.apache.myrmidon.AbstractProjectTest; | |||||
| import org.apache.myrmidon.framework.conditions.IsTrueCondition; | |||||
| /** | |||||
| * Test cases for the <is-true> condition. | |||||
| * | |||||
| * @author <a href="mailto:adammurdoch@apache.org">Adam Murdoch</a> | |||||
| * @version $Revision$ $Date$ | |||||
| */ | |||||
| public class IsTrueConditionTestCase | |||||
| extends AbstractProjectTest | |||||
| { | |||||
| public IsTrueConditionTestCase( final String name ) | |||||
| { | |||||
| super( name ); | |||||
| } | |||||
| /** | |||||
| * Test cases for <is-true> evaluation. | |||||
| */ | |||||
| public void testEvaluation() throws Exception | |||||
| { | |||||
| final File projectFile = getTestResource( "istrue.ant" ); | |||||
| executeTarget( projectFile, "set2true" ); | |||||
| executeTarget( projectFile, "set2false" ); | |||||
| executeTarget( projectFile, "not-set" ); | |||||
| // TODO - check error message | |||||
| String[] messages = {}; | |||||
| executeTargetExpectError( projectFile, "set", messages ); | |||||
| final Resources res = getResourcesForTested( IsTrueCondition.class ); | |||||
| messages = new String[] { | |||||
| null, | |||||
| res.getString( "istrue.no-property.error" ) | |||||
| }; | |||||
| executeTargetExpectError( projectFile, "no-prop-name", messages ); | |||||
| } | |||||
| } | |||||
| @@ -1,39 +0,0 @@ | |||||
| /* | |||||
| * 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.myrmidon.framework.conditions.test; | |||||
| import org.apache.myrmidon.AbstractProjectTest; | |||||
| import java.io.File; | |||||
| /** | |||||
| * Test cases for the <not> condition. | |||||
| * | |||||
| * @author <a href="mailto:adammurdoch@apache.org">Adam Murdoch</a> | |||||
| * @version $Revision$ $Date$ | |||||
| */ | |||||
| public class NotConditionTestCase | |||||
| extends AbstractProjectTest | |||||
| { | |||||
| public NotConditionTestCase( final String name ) | |||||
| { | |||||
| super( name ); | |||||
| } | |||||
| /** | |||||
| * Tests evaluation of <not>. | |||||
| */ | |||||
| public void testEvaluation() throws Exception | |||||
| { | |||||
| final File projectFile = getTestResource( "not.ant" ); | |||||
| executeTarget( projectFile, "truth-table" ); | |||||
| // TODO - check error messages | |||||
| executeTargetExpectError( projectFile, "empty", new String[0] ); | |||||
| executeTargetExpectError( projectFile, "too-many-nested", new String[0] ); | |||||
| } | |||||
| } | |||||
| @@ -1,37 +0,0 @@ | |||||
| /* | |||||
| * 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.myrmidon.framework.conditions.test; | |||||
| import java.io.File; | |||||
| import org.apache.myrmidon.AbstractProjectTest; | |||||
| /** | |||||
| * Test cases for the <or> condition. | |||||
| * | |||||
| * @author <a href="mailto:adammurdoch@apache.org">Adam Murdoch</a> | |||||
| * @version $Revision$ $Date$ | |||||
| */ | |||||
| public class OrConditionTestCase | |||||
| extends AbstractProjectTest | |||||
| { | |||||
| public OrConditionTestCase( final String name ) | |||||
| { | |||||
| super( name ); | |||||
| } | |||||
| /** | |||||
| * Tests evaluation of the <or> condition. | |||||
| */ | |||||
| public void testEvaluation() throws Exception | |||||
| { | |||||
| final File projectFile = getTestResource( "or.ant" ); | |||||
| executeTarget( projectFile, "empty" ); | |||||
| executeTarget( projectFile, "truth-table" ); | |||||
| executeTarget( projectFile, "lazy" ); | |||||
| } | |||||
| } | |||||
| @@ -1,57 +0,0 @@ | |||||
| /* | |||||
| * 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.myrmidon.framework.conditions.test; | |||||
| import org.apache.myrmidon.framework.conditions.Condition; | |||||
| import org.apache.myrmidon.api.TaskContext; | |||||
| import org.apache.myrmidon.api.TaskException; | |||||
| import org.apache.avalon.framework.configuration.Configurable; | |||||
| import org.apache.avalon.framework.configuration.Configuration; | |||||
| import org.apache.avalon.framework.configuration.ConfigurationException; | |||||
| /** | |||||
| * A condition used for testing. | |||||
| * | |||||
| * @author <a href="mailto:adammurdoch@apache.org">Adam Murdoch</a> | |||||
| * @version $Revision$ $Date$ | |||||
| * | |||||
| * @ant.type type="condition" name="true" | |||||
| * @ant.type type="condition" name="false" | |||||
| * @ant.type type="condition" name="fail" | |||||
| */ | |||||
| public class TestCondition | |||||
| implements Condition, Configurable | |||||
| { | |||||
| private String m_action; | |||||
| public void configure( final Configuration configuration ) | |||||
| throws ConfigurationException | |||||
| { | |||||
| m_action = configuration.getName(); | |||||
| } | |||||
| /** | |||||
| * Evaluates this condition. | |||||
| */ | |||||
| public boolean evaluate( final TaskContext context ) | |||||
| throws TaskException | |||||
| { | |||||
| if( m_action.equalsIgnoreCase( "true" ) ) | |||||
| { | |||||
| return true; | |||||
| } | |||||
| else if( m_action.equalsIgnoreCase( "false" ) ) | |||||
| { | |||||
| return false; | |||||
| } | |||||
| else | |||||
| { | |||||
| throw new TaskException( "Fail." ); | |||||
| } | |||||
| } | |||||
| } | |||||
| @@ -1,40 +0,0 @@ | |||||
| <!-- Tests for the <and> condition. --> | |||||
| <project version="2.0"> | |||||
| <!-- An empty <and> condition --> | |||||
| <target name="empty"> | |||||
| <assert> | |||||
| <and/> | |||||
| </assert> | |||||
| </target> | |||||
| <!-- The truth-table --> | |||||
| <target name="truth-table"> | |||||
| <assert expected="false"> | |||||
| <and><false/></and> | |||||
| </assert> | |||||
| <assert> | |||||
| <and><true/></and> | |||||
| </assert> | |||||
| <assert expected="false"> | |||||
| <and><false/><false/></and> | |||||
| </assert> | |||||
| <assert expected="false"> | |||||
| <and><true/><false/></and> | |||||
| </assert> | |||||
| <assert expected="false"> | |||||
| <and><false/><true/></and> | |||||
| </assert> | |||||
| <assert> | |||||
| <and><true/><true/></and> | |||||
| </assert> | |||||
| </target> | |||||
| <!-- Check lazy evaluation --> | |||||
| <target name="lazy"> | |||||
| <assert expected="false"> | |||||
| <and><false/><fail/></and> | |||||
| </assert> | |||||
| </target> | |||||
| </project> | |||||
| @@ -1,44 +0,0 @@ | |||||
| <!-- Tests for the <is-set> condition. --> | |||||
| <project version="2.0"> | |||||
| <!-- Set to some arbirary value --> | |||||
| <target name="set"> | |||||
| <property name="test-prop"> | |||||
| <path location="some-location"/> | |||||
| </property> | |||||
| <assert> | |||||
| <is-set property="test-prop"/> | |||||
| </assert> | |||||
| </target> | |||||
| <!-- Set to true --> | |||||
| <target name="set2true"> | |||||
| <property name="test-prop" value="true"/> | |||||
| <assert> | |||||
| <is-set property="test-prop"/> | |||||
| </assert> | |||||
| </target> | |||||
| <!-- Set to false --> | |||||
| <target name="set2false"> | |||||
| <property name="test-prop" value="false"/> | |||||
| <assert> | |||||
| <is-set property="test-prop"/> | |||||
| </assert> | |||||
| </target> | |||||
| <!-- Not set --> | |||||
| <target name="not-set"> | |||||
| <assert expected="false"> | |||||
| <is-set property="test-prop"/> | |||||
| </assert> | |||||
| </target> | |||||
| <!-- No property name --> | |||||
| <target name="no-prop-name"> | |||||
| <assert> | |||||
| <is-set/> | |||||
| </assert> | |||||
| </target> | |||||
| </project> | |||||
| @@ -1,44 +0,0 @@ | |||||
| <!-- Tests for the <is-true> condition. --> | |||||
| <project version="2.0"> | |||||
| <!-- Set to some arbirary value --> | |||||
| <target name="set"> | |||||
| <property name="test-prop"> | |||||
| <path location="some-location"/> | |||||
| </property> | |||||
| <assert> | |||||
| <is-true property="test-prop"/> | |||||
| </assert> | |||||
| </target> | |||||
| <!-- Set to true --> | |||||
| <target name="set2true"> | |||||
| <property name="test-prop" value="true"/> | |||||
| <assert> | |||||
| <is-true property="test-prop"/> | |||||
| </assert> | |||||
| </target> | |||||
| <!-- Set to false --> | |||||
| <target name="set2false"> | |||||
| <property name="test-prop" value="false"/> | |||||
| <assert expected="false"> | |||||
| <is-true property="test-prop"/> | |||||
| </assert> | |||||
| </target> | |||||
| <!-- Not set --> | |||||
| <target name="not-set"> | |||||
| <assert expected="false"> | |||||
| <is-true property="test-prop"/> | |||||
| </assert> | |||||
| </target> | |||||
| <!-- No property name --> | |||||
| <target name="no-prop-name"> | |||||
| <assert> | |||||
| <is-true/> | |||||
| </assert> | |||||
| </target> | |||||
| </project> | |||||
| @@ -1,28 +0,0 @@ | |||||
| <!-- Tests for the <not> condition. --> | |||||
| <project version="2.0"> | |||||
| <!-- An empty <or> condition --> | |||||
| <target name="empty"> | |||||
| <assert> | |||||
| <not/> | |||||
| </assert> | |||||
| </target> | |||||
| <!-- The truth-table --> | |||||
| <target name="truth-table"> | |||||
| <assert expected="false"> | |||||
| <not><true/></not> | |||||
| </assert> | |||||
| <assert> | |||||
| <not><false/></not> | |||||
| </assert> | |||||
| </target> | |||||
| <!-- Too many nested conditions --> | |||||
| <target name="too-many-nested"> | |||||
| <assert> | |||||
| <not><true/><false/></not> | |||||
| </assert> | |||||
| </target> | |||||
| </project> | |||||
| @@ -1,40 +0,0 @@ | |||||
| <!-- Tests for the <or> condition. --> | |||||
| <project version="2.0"> | |||||
| <!-- An empty <or> condition --> | |||||
| <target name="empty"> | |||||
| <assert> | |||||
| <or/> | |||||
| </assert> | |||||
| </target> | |||||
| <!-- The truth-table --> | |||||
| <target name="truth-table"> | |||||
| <assert expected="false"> | |||||
| <or><false/></or> | |||||
| </assert> | |||||
| <assert> | |||||
| <or><true/></or> | |||||
| </assert> | |||||
| <assert expected="false"> | |||||
| <or><false/><false/></or> | |||||
| </assert> | |||||
| <assert> | |||||
| <or><true/><false/></or> | |||||
| </assert> | |||||
| <assert> | |||||
| <or><false/><true/></or> | |||||
| </assert> | |||||
| <assert> | |||||
| <or><true/><true/></or> | |||||
| </assert> | |||||
| </target> | |||||
| <!-- Check lazy evaluation --> | |||||
| <target name="lazy"> | |||||
| <assert> | |||||
| <or><true/><fail/></or> | |||||
| </assert> | |||||
| </target> | |||||
| </project> | |||||
| @@ -1,120 +0,0 @@ | |||||
| /* | |||||
| * 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.myrmidon.framework.file.test; | |||||
| import java.io.File; | |||||
| import org.apache.aut.nativelib.PathUtil; | |||||
| import org.apache.avalon.excalibur.io.FileUtil; | |||||
| import org.apache.myrmidon.AbstractProjectTest; | |||||
| import org.apache.myrmidon.LogMessageTracker; | |||||
| /** | |||||
| * Test-cases for the <path> data type. | |||||
| * | |||||
| * @author <a href="mailto:adammurdoch@apache.org">Adam Murdoch</a> | |||||
| * @version $Revision$ $Date$ | |||||
| */ | |||||
| public class PathTestCase | |||||
| extends AbstractProjectTest | |||||
| { | |||||
| public PathTestCase( final String name ) | |||||
| { | |||||
| super( name ); | |||||
| } | |||||
| /** | |||||
| * Tests setting the location attribute. | |||||
| */ | |||||
| public void testLocationAttribute() throws Exception | |||||
| { | |||||
| testPathContent( "set-location", new String[]{"location"} ); | |||||
| } | |||||
| /** | |||||
| * Tests setting the path attribute. | |||||
| */ | |||||
| public void testPathAttribute() throws Exception | |||||
| { | |||||
| // Test a path with a single file | |||||
| testPathContent( "set-path", new String[]{"single-file"} ); | |||||
| // Test a path with several files, using ; separator | |||||
| testPathContent( "set-multi-path", new String[]{"file1", "file2", ".."} ); | |||||
| // Test a path with several files, using : separator | |||||
| testPathContent( "set-multi-path2", new String[]{"file1", "file2", ".."} ); | |||||
| } | |||||
| /** | |||||
| * Test using nested <path> elements. | |||||
| */ | |||||
| public void testPathElement() throws Exception | |||||
| { | |||||
| testPathContent( "nested-path", new String[]{"some-file"} ); | |||||
| testPathContent( "mixed-path", new String[]{"file1", "file2", "file3", "file4", "file5"} ); | |||||
| } | |||||
| /** | |||||
| * Test using nested <fileset> elements. | |||||
| */ | |||||
| public void testFilesetElement() throws Exception | |||||
| { | |||||
| testPathContent( "set-fileset", new String[]{"path.ant"} ); | |||||
| } | |||||
| /** | |||||
| * Test using a nested custom file list implementation. | |||||
| */ | |||||
| public void testCustomFileList() throws Exception | |||||
| { | |||||
| testPathContent( "test-custom-file-list", new String[]{"file1"} ); | |||||
| } | |||||
| /** | |||||
| * Test converting between string and path. | |||||
| */ | |||||
| public void testConvert() throws Exception | |||||
| { | |||||
| testPathContent( "convert-string-to-path", new String[]{"file1", "file2"} ); | |||||
| // Test conversion from path -> string | |||||
| final File[] files = { | |||||
| getTestResource( "file1", false ), | |||||
| getTestResource( "file2", false ) | |||||
| }; | |||||
| final String path = PathUtil.formatPath( files ); | |||||
| final LogMessageTracker listener = new LogMessageTracker(); | |||||
| listener.addExpectedMessage( "convert-path-to-string", "test-path = " + path ); | |||||
| final File projectFile = getTestResource( "path.ant" ); | |||||
| executeTarget( projectFile, "convert-path-to-string", listener ); | |||||
| } | |||||
| /** | |||||
| * Executes a target, and asserts that a particular list of file names | |||||
| * is logged. | |||||
| */ | |||||
| private void testPathContent( final String targetName, | |||||
| final String[] files ) throws Exception | |||||
| { | |||||
| final File projectFile = getTestResource( "path.ant" ); | |||||
| final File baseDir = projectFile.getParentFile(); | |||||
| // Add each of the expected file names | |||||
| final LogMessageTracker listener = new LogMessageTracker(); | |||||
| for( int i = 0; i < files.length; i++ ) | |||||
| { | |||||
| final String fileName = files[ i ]; | |||||
| final File file = FileUtil.resolveFile( baseDir, fileName ); | |||||
| listener.addExpectedMessage( targetName, file.getAbsolutePath() ); | |||||
| } | |||||
| // Execute the target | |||||
| executeTarget( projectFile, targetName, listener ); | |||||
| } | |||||
| } | |||||
| @@ -1,63 +0,0 @@ | |||||
| /* | |||||
| * 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.myrmidon.framework.file.test; | |||||
| import java.io.File; | |||||
| import java.util.ArrayList; | |||||
| import org.apache.myrmidon.api.TaskContext; | |||||
| import org.apache.myrmidon.api.TaskException; | |||||
| import org.apache.myrmidon.framework.file.FileList; | |||||
| import org.apache.myrmidon.framework.file.Path; | |||||
| /** | |||||
| * A test FileList implementation. | |||||
| * | |||||
| * @author <a href="mailto:adammurdoch@apache.org">Adam Murdoch</a> | |||||
| * @version $Revision$ $Date$ | |||||
| * | |||||
| * @ant.type type="path" name="test-file-list" | |||||
| */ | |||||
| public class TestFileList | |||||
| implements FileList | |||||
| { | |||||
| private String m_name; | |||||
| private Path m_path; | |||||
| public void setName( final String name ) | |||||
| { | |||||
| m_name = name; | |||||
| } | |||||
| public void setPath( final Path path ) | |||||
| { | |||||
| m_path = path; | |||||
| } | |||||
| /** | |||||
| * Returns the files in this list. | |||||
| */ | |||||
| public String[] listFiles( final TaskContext context ) | |||||
| throws TaskException | |||||
| { | |||||
| final ArrayList files = new ArrayList(); | |||||
| if( m_name != null ) | |||||
| { | |||||
| final File file = context.resolveFile( m_name ); | |||||
| files.add( file.getAbsolutePath() ); | |||||
| } | |||||
| if( m_path != null ) | |||||
| { | |||||
| final String[] fileNames = m_path.listFiles( context ); | |||||
| for( int i = 0; i < fileNames.length; i++ ) | |||||
| { | |||||
| files.add( fileNames[ i ] ); | |||||
| } | |||||
| } | |||||
| return (String[])files.toArray( new String[ files.size() ] ); | |||||
| } | |||||
| } | |||||
| @@ -1,80 +0,0 @@ | |||||
| <project version="2.0"> | |||||
| <!-- Test setting the location attribute --> | |||||
| <target name="set-location"> | |||||
| <list-path> | |||||
| <path location="location"/> | |||||
| </list-path> | |||||
| </target> | |||||
| <!-- Test setting the path attribute --> | |||||
| <target name="set-path"> | |||||
| <list-path> | |||||
| <path path="single-file"/> | |||||
| </list-path> | |||||
| </target> | |||||
| <!-- Test setting the path attribute with ; delims --> | |||||
| <target name="set-multi-path"> | |||||
| <list-path> | |||||
| <path path="file1;file2;.."/> | |||||
| </list-path> | |||||
| </target> | |||||
| <!-- Test setting the path attribute with : delims --> | |||||
| <target name="set-multi-path2"> | |||||
| <list-path> | |||||
| <path path="file1:file2:.."/> | |||||
| </list-path> | |||||
| </target> | |||||
| <!-- Test using a nested <path> element --> | |||||
| <target name="nested-path"> | |||||
| <list-path> | |||||
| <path> | |||||
| <path location="some-file"/> | |||||
| </path> | |||||
| </list-path> | |||||
| </target> | |||||
| <!-- Test using a mix of attributes and nested <path> elements --> | |||||
| <target name="mixed-path"> | |||||
| <list-path> | |||||
| <path location="file1" path="file2;file3"> | |||||
| <path location="file4"/> | |||||
| <path location="file5"/> | |||||
| </path> | |||||
| </list-path> | |||||
| </target> | |||||
| <!-- Test using a nested fileset --> | |||||
| <target name="set-fileset"> | |||||
| <list-path> | |||||
| <path> | |||||
| <fileset dir="." includes="**/path.ant"/> | |||||
| </path> | |||||
| </list-path> | |||||
| </target> | |||||
| <!-- Test using a custom file list implementation --> | |||||
| <target name="test-custom-file-list"> | |||||
| <list-path> | |||||
| <path> | |||||
| <test-file-list name="file1"/> | |||||
| </path> | |||||
| </list-path> | |||||
| </target> | |||||
| <!-- Test converting a string to a path --> | |||||
| <target name="convert-string-to-path"> | |||||
| <list-path> | |||||
| <test-file-list path="file1;file2"/> | |||||
| </list-path> | |||||
| </target> | |||||
| <!-- Test converting a path to a string --> | |||||
| <target name="convert-path-to-string"> | |||||
| <path id="test-path" path="file1:file2"/> | |||||
| <log>test-path = ${test-path}</log> | |||||
| </target> | |||||
| </project> | |||||
| @@ -1,126 +0,0 @@ | |||||
| /* | |||||
| * 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.test; | |||||
| import java.io.File; | |||||
| import org.apache.myrmidon.AbstractProjectTest; | |||||
| import org.apache.myrmidon.LogMessageTracker; | |||||
| /** | |||||
| * Simple tests for the Ant1 Compatibility layer. | |||||
| * | |||||
| * @author <a href="mailto:darrell@apache.org">Darrell DeBoer</a> | |||||
| * @version $Revision$ $Date$ | |||||
| */ | |||||
| public class Ant1CompatTestCase | |||||
| extends AbstractProjectTest | |||||
| { | |||||
| public Ant1CompatTestCase( final String name ) | |||||
| { | |||||
| super( name ); | |||||
| } | |||||
| public void testBasic() throws Exception | |||||
| { | |||||
| final File projectFile = getTestResource( "basic-test.xml" ); | |||||
| // <echo> test | |||||
| LogMessageTracker tracker = new LogMessageTracker(); | |||||
| tracker.addExpectedMessage( "echo-test", "Hello, hello, hello" ); | |||||
| executeTarget( projectFile, "echo-test", tracker ); | |||||
| // Property resolution tests | |||||
| tracker = new LogMessageTracker(); | |||||
| tracker.addExpectedMessage( "property-test", "prop-1 = [value-1]" ); | |||||
| tracker.addExpectedMessage( "property-test", "prop-2 = [value-2]" ); | |||||
| tracker.addExpectedMessage( "property-test", "prop-undefined = [${prop-undefined}]" ); | |||||
| tracker.addExpectedMessage( "property-test", "Omit, replace$, but keep ${} and $" ); | |||||
| executeTarget( projectFile, "property-test", tracker ); | |||||
| } | |||||
| public void testIfUnless() throws Exception | |||||
| { | |||||
| final File projectFile = getTestResource( "if-unless-test.xml" ); | |||||
| // if/unless tests. | |||||
| LogMessageTracker tracker = new LogMessageTracker(); | |||||
| // Should pass if for "set", "true" and "false" | |||||
| tracker.addExpectedMessage( "if-set-test", "Ran target: if-set-test" ); | |||||
| tracker.addExpectedMessage( "if-true-test", "Ran target: if-true-test" ); | |||||
| tracker.addExpectedMessage( "if-false-test", "Ran target: if-false-test" ); | |||||
| // Should only pass unless, when not defined. | |||||
| tracker.addExpectedMessage( "unless-unset-test", | |||||
| "Ran target: unless-unset-test" ); | |||||
| // If combined with unless on a single target. | |||||
| tracker.addExpectedMessage( "if-with-unless-test-1", | |||||
| "Ran target: if-with-unless-test-1" ); | |||||
| executeTarget( projectFile, "if-unless-tests", tracker ); | |||||
| } | |||||
| public void testAntTask() throws Exception | |||||
| { | |||||
| final File projectFile = getTestResource( "ant-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( "echo-test", "Hello, hello, hello" ); | |||||
| // executeTarget( projectFile, "ant-samefile-test", tracker ); | |||||
| executeTarget( projectFile, "ant-samefile-test" ); | |||||
| tracker = new LogMessageTracker(); | |||||
| tracker.addExpectedMessage( "main", | |||||
| "Executed subdir/build.xml (default target)" ); | |||||
| tracker.addExpectedMessage( "main", | |||||
| "Executed subdir/build.xml (default target)" ); | |||||
| tracker.addExpectedMessage( "main", | |||||
| "Executed subdir/build.xml (default target)" ); | |||||
| tracker.addExpectedMessage( "echo", | |||||
| "Executed subdir/build.xml (echo target)" ); | |||||
| // executeTarget( projectFile, "ant-otherfile-test", tracker ); | |||||
| executeTarget( projectFile, "ant-otherfile-test" ); | |||||
| tracker = new LogMessageTracker(); | |||||
| tracker.addExpectedMessage( "property-test", | |||||
| "test-prop = [test-value]" ); | |||||
| tracker.addExpectedMessage( "property-test", | |||||
| "test-prop = [set in calling task]" ); | |||||
| tracker.addExpectedMessage( "property-test", | |||||
| "test-prop = [set in calling target]" ); | |||||
| tracker.addExpectedMessage( "property-test", | |||||
| "test-prop = [test-value]" ); | |||||
| // executeTarget( projectFile, "ant-setprops-test", tracker ); | |||||
| 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,55 +0,0 @@ | |||||
| <project name="ant-task-test" | |||||
| default="default-target"> | |||||
| <target name="default-target"> | |||||
| <echo message="In default target."/> | |||||
| </target> | |||||
| <target name="echo-test"> | |||||
| <echo message="Hello, hello, hello"/> | |||||
| </target> | |||||
| <!-- Test <ant> on this build file. --> | |||||
| <target name="ant-samefile-test"> | |||||
| <!-- Default target --> | |||||
| <ant antfile="ant-task-test.xml"/> | |||||
| <!-- Named target --> | |||||
| <ant antfile="ant-task-test.xml" target="echo-test"/> | |||||
| </target> | |||||
| <!-- Test <ant> on another build file. --> | |||||
| <target name="ant-otherfile-test"> | |||||
| <!-- Full path to file. --> | |||||
| <ant antfile="subdir/build.xml"/> | |||||
| <!-- Dir and file specified --> | |||||
| <ant dir="subdir" antfile="build.xml"/> | |||||
| <!-- Dir with default filename --> | |||||
| <ant dir="subdir"/> | |||||
| <!-- Call named target --> | |||||
| <ant antfile="subdir/build.xml" target="echo"/> | |||||
| </target> | |||||
| <!-- Test <ant> with property overrides --> | |||||
| <target name="ant-setprops-test"> | |||||
| <!-- No property overrides --> | |||||
| <ant antfile="subdir/build.xml" target="property-test"/> | |||||
| <!-- Override property within task def --> | |||||
| <ant antfile="subdir/build.xml" target="property-test"> | |||||
| <property name="test-prop" value="set in calling task"/> | |||||
| </ant> | |||||
| <!-- Override property in containing project --> | |||||
| <property name="test-prop" value="set in calling target"/> | |||||
| <ant antfile="subdir/build.xml" target="property-test"/> | |||||
| <!-- Test inherit-all = false --> | |||||
| <ant antfile="subdir/build.xml" target="property-test" | |||||
| inheritall="false"/> | |||||
| </target> | |||||
| </project> | |||||
| @@ -1,34 +0,0 @@ | |||||
| <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,21 +0,0 @@ | |||||
| <project name="ant1compat-test" | |||||
| default="echo-test"> | |||||
| <property name="prop-1" value="value-1"/> | |||||
| <target name="main" depends="echo-test, property-test"/> | |||||
| <target name="echo-test"> | |||||
| <echo message="Hello, hello, hello"/> | |||||
| </target> | |||||
| <target name="property-test"> | |||||
| <property name="prop-2" value="value-2"/> | |||||
| <echo message="prop-1 = [${prop-1}]"/> | |||||
| <echo message="prop-2 = [${prop-2}]"/> | |||||
| <echo message="prop-undefined = [${prop-undefined}]"/> | |||||
| <echo message="Omit$, replace$$, but keep ${} and $"/> | |||||
| </target> | |||||
| </project> | |||||
| @@ -1,62 +0,0 @@ | |||||
| <project name="if-unless-test" | |||||
| default="if-unless-tests"> | |||||
| <target name="if-unless-tests" | |||||
| depends="setup-props, | |||||
| if-set-test, if-unset-test, | |||||
| if-true-test, if-false-test, | |||||
| unless-set-test, unless-unset-test, | |||||
| unless-true-test, unless-false-test, | |||||
| if-with-unless-test-1, if-with-unless-test-2, | |||||
| if-with-unless-test-3"/> | |||||
| <target name="setup-props"> | |||||
| <property name="prop-set" value="set"/> | |||||
| <property name="prop-true" value="true"/> | |||||
| <property name="prop-false" value="false"/> | |||||
| </target> | |||||
| <target name="if-set-test" if="prop-set"> | |||||
| <echo message="Ran target: if-set-test"/> | |||||
| </target> | |||||
| <target name="if-unset-test" if="prop-unset"> | |||||
| <echo message="Ran target: if-unset-test"/> | |||||
| </target> | |||||
| <target name="if-true-test" if="prop-true"> | |||||
| <echo message="Ran target: if-true-test"/> | |||||
| </target> | |||||
| <target name="if-false-test" if="prop-false"> | |||||
| <echo message="Ran target: if-false-test"/> | |||||
| </target> | |||||
| <target name="unless-set-test" unless="prop-set"> | |||||
| <echo message="Ran target: unless-set-test"/> | |||||
| </target> | |||||
| <target name="unless-unset-test" unless="prop-unset"> | |||||
| <echo message="Ran target: unless-unset-test"/> | |||||
| </target> | |||||
| <target name="unless-true-test" unless="prop-true"> | |||||
| <echo message="Ran target: unless-true-test"/> | |||||
| </target> | |||||
| <target name="unless-false-test" unless="prop-false"> | |||||
| <echo message="Ran target: unless-false-test"/> | |||||
| </target> | |||||
| <target name="if-with-unless-test-1" if="prop-set" unless="prop-unset"> | |||||
| <echo message="Ran target: if-with-unless-test-1"/> | |||||
| </target> | |||||
| <target name="if-with-unless-test-2" if="prop-unset" unless="prop-unset"> | |||||
| <echo message="Ran target: if-with-unless-test-2"/> | |||||
| </target> | |||||
| <target name="if-with-unless-test-3" if="prop-set" unless="prop-set"> | |||||
| <echo message="Ran target: if-with-unless-test-3"/> | |||||
| </target> | |||||
| </project> | |||||
| @@ -1,18 +0,0 @@ | |||||
| <project name="call-target" | |||||
| description="Simple build for testing ant and antcall tasks." | |||||
| default="main"> | |||||
| <property name="test-prop" value="test-value"/> | |||||
| <target name="main"> | |||||
| <echo message="Executed subdir/build.xml (default target)"/> | |||||
| </target> | |||||
| <target name="echo"> | |||||
| <echo message="Executed subdir/build.xml (echo target)"/> | |||||
| </target> | |||||
| <target name="property-test"> | |||||
| <echo message="test-prop = [${test-prop}]"/> | |||||
| </target> | |||||
| </project> | |||||