You are viewing a plain text version of this content. The canonical link for it is here.
Posted to easyant-commits@incubator.apache.org by hi...@apache.org on 2011/02/17 17:01:56 UTC

svn commit: r1071697 [34/42] - in /incubator/easyant: buildtypes/ buildtypes/trunk/ buildtypes/trunk/build-osgi-bundle-java/ buildtypes/trunk/build-osgi-bundle-java/src/ buildtypes/trunk/build-osgi-bundle-java/src/main/ buildtypes/trunk/build-osgi-bund...

Added: incubator/easyant/core/trunk/src/test/java/org/apache/easyant/core/EasyAntBaseTest.java
URL: http://svn.apache.org/viewvc/incubator/easyant/core/trunk/src/test/java/org/apache/easyant/core/EasyAntBaseTest.java?rev=1071697&view=auto
==============================================================================
--- incubator/easyant/core/trunk/src/test/java/org/apache/easyant/core/EasyAntBaseTest.java (added)
+++ incubator/easyant/core/trunk/src/test/java/org/apache/easyant/core/EasyAntBaseTest.java Thu Feb 17 17:01:07 2011
@@ -0,0 +1,703 @@
+/*
+ *  Copyright 2008-2010 the EasyAnt project
+ *
+ *  See the NOTICE file distributed with this work for additional information
+ *  regarding copyright ownership.
+ *
+ *  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 org.apache.easyant.core;
+
+import java.io.File;
+import java.io.PrintStream;
+import java.net.URISyntaxException;
+import java.net.URL;
+
+import junit.framework.TestCase;
+
+import org.apache.easyant.core.factory.EasyantConfigurationFactory;
+import org.apache.tools.ant.BuildEvent;
+import org.apache.tools.ant.BuildException;
+import org.apache.tools.ant.BuildListener;
+import org.apache.tools.ant.MagicNames;
+import org.apache.tools.ant.Project;
+import org.apache.tools.ant.types.LogLevel;
+
+/**
+ * A EasyAntBaseTest is a TestCase which executes targets from an easyant module
+ * for testing.
+ * 
+ * This class provides a number of utility methods for particular build file
+ * tests which extend this class.
+ * 
+ */
+public abstract class EasyAntBaseTest extends TestCase {
+
+	protected Project project;
+	protected EasyAntConfiguration conf;
+
+	private StringBuffer logBuffer;
+	private StringBuffer fullLogBuffer;
+	private StringBuffer outBuffer;
+	private StringBuffer errBuffer;
+	private BuildException buildException;
+
+	/**
+	 * Default constructor for the BuildFileTest object.
+	 */
+	public EasyAntBaseTest() {
+		super();
+	}
+
+	/**
+	 * Constructor for the BuildFileTest object.
+	 * 
+	 * @param name
+	 *            string to pass up to TestCase constructor
+	 */
+	public EasyAntBaseTest(String name) {
+		super(name);
+	}
+
+	/**
+	 * Automatically calls the target called "tearDown" from the build file
+	 * tested if it exits.
+	 * 
+	 * This allows to use Ant tasks directly in the build file to clean up after
+	 * each test. Note that no "setUp" target is automatically called, since
+	 * it's trivial to have a test target depend on it.
+	 */
+	protected void tearDown() throws Exception {
+		if (project == null) {
+			/*
+			 * Maybe the BuildFileTest was subclassed and there is no
+			 * initialized project. So we could avoid getting a NPE. If there is
+			 * an initialized project getTargets() does not return null as it is
+			 * initialized by an empty HashSet.
+			 */
+			return;
+		}
+		final String tearDown = "tearDown";
+		if (project.getTargets().containsKey(tearDown)) {
+			project.executeTarget(tearDown);
+		}
+	}
+
+	/**
+	 * run a target, expect for any build exception
+	 * 
+	 * @param target
+	 *            target to run
+	 * @param cause
+	 *            information string to reader of report
+	 */
+	public void expectBuildException(String target, String cause) {
+		expectSpecificBuildException(target, cause, null);
+	}
+
+	/**
+	 * Assert that only the given message has been logged with a priority <=
+	 * INFO when running the given target.
+	 */
+	public void expectLog(String target, String log) {
+		executeTarget(target);
+		String realLog = getLog();
+		assertEquals(log, realLog);
+	}
+
+	/**
+	 * Assert that the given substring is in the log messages.
+	 */
+	public void assertLogContaining(String substring) {
+		String realLog = getLog();
+		assertTrue("expecting log to contain \"" + substring + "\" log was \""
+				+ realLog + "\"", realLog.indexOf(substring) >= 0);
+	}
+
+	/**
+	 * Assert that the given substring is not in the log messages.
+	 */
+	public void assertLogNotContaining(String substring) {
+		String realLog = getLog();
+		assertFalse("didn't expect log to contain \"" + substring
+				+ "\" log was \"" + realLog + "\"",
+				realLog.indexOf(substring) >= 0);
+	}
+
+	/**
+	 * Assert that the given substring is in the output messages.
+	 * 
+	 * @since Ant1.7
+	 */
+	public void assertOutputContaining(String substring) {
+		assertOutputContaining(null, substring);
+	}
+
+	/**
+	 * Assert that the given substring is in the output messages.
+	 * 
+	 * @param message
+	 *            Print this message if the test fails. Defaults to a meaningful
+	 *            text if <tt>null</tt> is passed.
+	 * @since Ant1.7
+	 */
+	public void assertOutputContaining(String message, String substring) {
+		String realOutput = getOutput();
+		String realMessage = (message != null) ? message
+				: "expecting output to contain \"" + substring
+						+ "\" output was \"" + realOutput + "\"";
+		assertTrue(realMessage, realOutput.indexOf(substring) >= 0);
+	}
+
+	/**
+	 * Assert that the given substring is not in the output messages.
+	 * 
+	 * @param message
+	 *            Print this message if the test fails. Defaults to a meaningful
+	 *            text if <tt>null</tt> is passed.
+	 * @since Ant1.7
+	 */
+	public void assertOutputNotContaining(String message, String substring) {
+		String realOutput = getOutput();
+		String realMessage = (message != null) ? message
+				: "expecting output to not contain \"" + substring
+						+ "\" output was \"" + realOutput + "\"";
+		assertFalse(realMessage, realOutput.indexOf(substring) >= 0);
+	}
+
+	/**
+	 * Assert that the given message has been logged with a priority &lt;= INFO
+	 * when running the given target.
+	 */
+	public void expectLogContaining(String target, String log) {
+		executeTarget(target);
+		assertLogContaining(log);
+	}
+
+	/**
+	 * Assert that the given message has not been logged with a priority &lt;=
+	 * INFO when running the given target.
+	 */
+	public void expectLogNotContaining(String target, String log) {
+		executeTarget(target);
+		assertLogNotContaining(log);
+	}
+
+	/**
+	 * Gets the log the BuildFileTest object. Only valid if configureProject()
+	 * has been called.
+	 * 
+	 * @pre logBuffer!=null
+	 * @return The log value
+	 */
+	public String getLog() {
+		return logBuffer.toString();
+	}
+
+	/**
+	 * Assert that the given message has been logged with a priority &gt;=
+	 * VERBOSE when running the given target.
+	 */
+	public void expectDebuglog(String target, String log) {
+		executeTarget(target);
+		String realLog = getFullLog();
+		assertEquals(log, realLog);
+	}
+
+	/**
+	 * Assert that the given substring is in the log messages.
+	 */
+	public void assertDebuglogContaining(String substring) {
+		String realLog = getFullLog();
+		assertTrue("expecting debug log to contain \"" + substring
+				+ "\" log was \"" + realLog + "\"",
+				realLog.indexOf(substring) >= 0);
+	}
+
+	/**
+	 * Gets the log the BuildFileTest object.
+	 * 
+	 * Only valid if configureProject() has been called.
+	 * 
+	 * @pre fullLogBuffer!=null
+	 * @return The log value
+	 */
+	public String getFullLog() {
+		return fullLogBuffer.toString();
+	}
+
+	/**
+	 * execute the target, verify output matches expectations
+	 * 
+	 * @param target
+	 *            target to execute
+	 * @param output
+	 *            output to look for
+	 */
+	public void expectOutput(String target, String output) {
+		executeTarget(target);
+		String realOutput = getOutput();
+		assertEquals(output, realOutput.trim());
+	}
+
+	/**
+	 * Executes the target, verify output matches expectations and that we got
+	 * the named error at the end
+	 * 
+	 * @param target
+	 *            target to execute
+	 * @param output
+	 *            output to look for
+	 * @param error
+	 *            Description of Parameter
+	 */
+	public void expectOutputAndError(String target, String output, String error) {
+		executeTarget(target);
+		String realOutput = getOutput();
+		assertEquals(output, realOutput);
+		String realError = getError();
+		assertEquals(error, realError);
+	}
+
+	public String getOutput() {
+		return cleanBuffer(outBuffer);
+	}
+
+	public String getError() {
+		return cleanBuffer(errBuffer);
+	}
+
+	public BuildException getBuildException() {
+		return buildException;
+	}
+
+	private String cleanBuffer(StringBuffer buffer) {
+		StringBuffer cleanedBuffer = new StringBuffer();
+		boolean cr = false;
+		for (int i = 0; i < buffer.length(); i++) {
+			char ch = buffer.charAt(i);
+			if (ch == '\r') {
+				cr = true;
+				continue;
+			}
+
+			if (!cr) {
+				cleanedBuffer.append(ch);
+			} else {
+				cleanedBuffer.append(ch);
+			}
+		}
+		return cleanedBuffer.toString();
+	}
+
+	/**
+	 * Set up to run the named project
+	 * 
+	 * @param url
+	 *            path to project file to run
+	 * @throws BuildException
+	 */
+	public void configureProject(URL url) throws BuildException {
+		File f = null;
+		try {
+			f = new File(url.toURI());
+		} catch (URISyntaxException e) {
+			throw new BuildException("Can't load project from url "
+					+ url.toString(), e);
+		}
+		configureProject(f.getAbsolutePath(), Project.MSG_DEBUG);
+	}
+
+	/**
+	 * Set up to run the named project
+	 * 
+	 * @param url
+	 *            path to project file to run
+	 * @param logLevel
+	 *            a given {@link LogLevel}
+	 * 
+	 * @throws BuildException
+	 */
+	public void configureProject(URL url, int logLevel) throws BuildException {
+		File f = null;
+		try {
+			f = new File(url.toURI());
+		} catch (URISyntaxException e) {
+			throw new BuildException("Can't load project from url "
+					+ url.toString(), e);
+		}
+		configureProject(f.getAbsolutePath(), logLevel);
+	}
+
+	/**
+	 * Sets up to run the named project
+	 * 
+	 * @param filename
+	 *            name of project file to run
+	 */
+	public void configureProject(String filename) throws BuildException {
+		configureProject(filename, Project.MSG_DEBUG);
+	}
+
+	/**
+	 * Sets up to run the named project If you want to modify a few thing on the
+	 * default configuration you should override this method
+	 * 
+	 * @param filename
+	 *            name of project file to run
+	 * @param logLevel
+	 *            a given {@link LogLevel}
+	 */
+	public void configureProject(String filename, int logLevel)
+			throws BuildException {
+		conf = EasyantConfigurationFactory.getInstance()
+				.createDefaultConfiguration();
+		conf.setMsgOutputLevel(logLevel);
+		conf.setBuildModule(new File(filename));
+		conf.getDefinedProps().put(
+				EasyAntMagicNames.SKIP_CORE_REVISION_CHECKER, "true");
+		// to avoid side effects due to user settings we ignore this setting by
+		// default for test
+		conf.getDefinedProps().put(EasyAntMagicNames.IGNORE_USER_IVYSETTINGS,
+				"true");
+
+		// Configure the project basedir
+		File projectModule = new File(filename);
+		if (!projectModule.exists()) {
+			throw new BuildException("Project "
+					+ projectModule.getAbsolutePath() + " does not exists");
+		}
+		conf.getDefinedProps().put(MagicNames.PROJECT_BASEDIR,
+				projectModule.getParent());
+
+	}
+
+	/**
+	 * Init the project instance with configuration
+	 * 
+	 * @pre configureProject has been called
+	 */
+	public void initProject() {
+		if (conf == null) {
+			throw new RuntimeException(
+					"You must call the configureProject method before initProject()");
+		}
+		// Flush the buffer
+		logBuffer = new StringBuffer();
+		fullLogBuffer = new StringBuffer();
+		// init the new project instance
+		project = new Project();
+		project.addBuildListener(new AntTestListener(conf.getMsgOutputLevel()));
+		EasyAntEngine eaEngine = new EasyAntEngine(conf);
+		eaEngine.initProject(project);
+	}
+
+	/**
+	 * Executes a target we have set up
+	 * 
+	 * @pre initProject has been called
+	 * @param targetName
+	 *            target to run
+	 */
+	public void executeTarget(String targetName) {
+		PrintStream sysOut = System.out;
+		PrintStream sysErr = System.err;
+		try {
+			sysOut.flush();
+			sysErr.flush();
+			outBuffer = new StringBuffer();
+			PrintStream out = new PrintStream(new AntOutputStream(outBuffer));
+			System.setOut(out);
+			errBuffer = new StringBuffer();
+			PrintStream err = new PrintStream(new AntOutputStream(errBuffer));
+			System.setErr(err);
+			logBuffer = new StringBuffer();
+			fullLogBuffer = new StringBuffer();
+			buildException = null;
+			project.executeTarget(targetName);
+		} finally {
+			System.setOut(sysOut);
+			System.setErr(sysErr);
+		}
+
+	}
+
+	/**
+	 * Get the project which has been configured for a test.
+	 * 
+	 * @return the Project instance for this test.
+	 */
+	public Project getProject() {
+		return project;
+	}
+
+	/**
+	 * Gets the directory of the project.
+	 * 
+	 * @return the base dir of the project
+	 */
+	public File getProjectDir() {
+		return project.getBaseDir();
+	}
+
+	/**
+	 * Runs a target, wait for a build exception.
+	 * 
+	 * @param target
+	 *            target to run
+	 * @param cause
+	 *            information string to reader of report
+	 * @param msg
+	 *            the message value of the build exception we are waiting for
+	 *            set to null for any build exception to be valid
+	 */
+	public void expectSpecificBuildException(String target, String cause,
+			String msg) {
+		try {
+			executeTarget(target);
+		} catch (org.apache.tools.ant.BuildException ex) {
+			buildException = ex;
+			if ((null != msg) && (!ex.getMessage().equals(msg))) {
+				fail("Should throw BuildException because '" + cause
+						+ "' with message '" + msg + "' (actual message '"
+						+ ex.getMessage() + "' instead)");
+			}
+			return;
+		}
+		fail("Should throw BuildException because: " + cause);
+	}
+
+	/**
+	 * run a target, expect an exception string containing the substring we look
+	 * for (case sensitive match)
+	 * 
+	 * @param target
+	 *            target to run
+	 * @param cause
+	 *            information string to reader of report
+	 * @param contains
+	 *            substring of the build exception to look for
+	 */
+	public void expectBuildExceptionContaining(String target, String cause,
+			String contains) {
+		try {
+			executeTarget(target);
+		} catch (org.apache.tools.ant.BuildException ex) {
+			buildException = ex;
+			if ((null != contains) && (ex.getMessage().indexOf(contains) == -1)) {
+				fail("Should throw BuildException because '" + cause
+						+ "' with message containing '" + contains
+						+ "' (actual message '" + ex.getMessage()
+						+ "' instead)");
+			}
+			return;
+		}
+		fail("Should throw BuildException because: " + cause);
+	}
+
+	/**
+	 * call a target, verify property is as expected
+	 * 
+	 * @param target
+	 *            build file target
+	 * @param property
+	 *            property name
+	 * @param value
+	 *            expected value
+	 */
+	public void expectPropertySet(String target, String property, String value) {
+		executeTarget(target);
+		assertPropertyEquals(property, value);
+	}
+
+	/**
+	 * assert that a property equals a value; comparison is case sensitive.
+	 * 
+	 * @param property
+	 *            property name
+	 * @param value
+	 *            expected value
+	 */
+	public void assertPropertyEquals(String property, String value) {
+		String result = project.getProperty(property);
+		assertEquals("property " + property, value, result);
+	}
+
+	/**
+	 * assert that a property equals "true".
+	 * 
+	 * @param property
+	 *            property name
+	 */
+	public void assertPropertySet(String property) {
+		assertPropertyEquals(property, "true");
+	}
+
+	/**
+	 * assert that a property is null.
+	 * 
+	 * @param property
+	 *            property name
+	 */
+	public void assertPropertyUnset(String property) {
+		assertPropertyEquals(property, null);
+	}
+
+	/**
+	 * call a target, verify named property is "true".
+	 * 
+	 * @param target
+	 *            build file target
+	 * @param property
+	 *            property name
+	 */
+	public void expectPropertySet(String target, String property) {
+		expectPropertySet(target, property, "true");
+	}
+
+	/**
+	 * Call a target, verify property is null.
+	 * 
+	 * @param target
+	 *            build file target
+	 * @param property
+	 *            property name
+	 */
+	public void expectPropertyUnset(String target, String property) {
+		expectPropertySet(target, property, null);
+	}
+
+	/**
+	 * Retrieve a resource from the caller classloader to avoid assuming a vm
+	 * working directory. The resource path must be relative to the package name
+	 * or absolute from the root path.
+	 * 
+	 * @param resource
+	 *            the resource to retrieve its url.
+	 * @throws junit.framework.AssertionFailedError
+	 *             if the resource is not found.
+	 */
+	public URL getResource(String resource) {
+		URL url = getClass().getResource(resource);
+		assertNotNull("Could not find resource :" + resource, url);
+		return url;
+	}
+
+	/**
+	 * an output stream which saves stuff to our buffer.
+	 */
+	private static class AntOutputStream extends java.io.OutputStream {
+		private StringBuffer buffer;
+
+		public AntOutputStream(StringBuffer buffer) {
+			this.buffer = buffer;
+		}
+
+		public void write(int b) {
+			buffer.append((char) b);
+		}
+	}
+
+	/**
+	 * Our own personal build listener.
+	 */
+	private class AntTestListener implements BuildListener {
+		private int logLevel;
+
+		/**
+		 * Constructs a test listener which will ignore log events above the
+		 * given level.
+		 */
+		public AntTestListener(int logLevel) {
+			this.logLevel = logLevel;
+		}
+
+		/**
+		 * Fired before any targets are started.
+		 */
+		public void buildStarted(BuildEvent event) {
+		}
+
+		/**
+		 * Fired after the last target has finished. This event will still be
+		 * thrown if an error occurred during the build.
+		 * 
+		 * @see BuildEvent#getException()
+		 */
+		public void buildFinished(BuildEvent event) {
+		}
+
+		/**
+		 * Fired when a target is started.
+		 * 
+		 * @see BuildEvent#getTarget()
+		 */
+		public void targetStarted(BuildEvent event) {
+			// System.out.println("targetStarted " +
+			// event.getTarget().getName());
+		}
+
+		/**
+		 * Fired when a target has finished. This event will still be thrown if
+		 * an error occurred during the build.
+		 * 
+		 * @see BuildEvent#getException()
+		 */
+		public void targetFinished(BuildEvent event) {
+			// System.out.println("targetFinished " +
+			// event.getTarget().getName());
+		}
+
+		/**
+		 * Fired when a task is started.
+		 * 
+		 * @see BuildEvent#getTask()
+		 */
+		public void taskStarted(BuildEvent event) {
+			// System.out.println("taskStarted " +
+			// event.getTask().getTaskName());
+		}
+
+		/**
+		 * Fired when a task has finished. This event will still be throw if an
+		 * error occurred during the build.
+		 * 
+		 * @see BuildEvent#getException()
+		 */
+		public void taskFinished(BuildEvent event) {
+			// System.out.println("taskFinished " +
+			// event.getTask().getTaskName());
+		}
+
+		/**
+		 * Fired whenever a message is logged.
+		 * 
+		 * @see BuildEvent#getMessage()
+		 * @see BuildEvent#getPriority()
+		 */
+		public void messageLogged(BuildEvent event) {
+			if (event.getPriority() > logLevel) {
+				// ignore event
+				return;
+			}
+
+			if (event.getPriority() == Project.MSG_INFO
+					|| event.getPriority() == Project.MSG_WARN
+					|| event.getPriority() == Project.MSG_ERR) {
+				logBuffer.append(event.getMessage());
+			}
+			fullLogBuffer.append(event.getMessage());
+		}
+	}
+
+}

Propchange: incubator/easyant/core/trunk/src/test/java/org/apache/easyant/core/EasyAntBaseTest.java
------------------------------------------------------------------------------
    svn:eol-style = native

Propchange: incubator/easyant/core/trunk/src/test/java/org/apache/easyant/core/EasyAntBaseTest.java
------------------------------------------------------------------------------
    svn:executable = *

Propchange: incubator/easyant/core/trunk/src/test/java/org/apache/easyant/core/EasyAntBaseTest.java
------------------------------------------------------------------------------
    svn:keywords = Date Revision Author HeadURL Id

Propchange: incubator/easyant/core/trunk/src/test/java/org/apache/easyant/core/EasyAntBaseTest.java
------------------------------------------------------------------------------
    svn:mime-type = text/plain

Added: incubator/easyant/core/trunk/src/test/java/org/apache/easyant/core/ModuleInheritanceTest.java
URL: http://svn.apache.org/viewvc/incubator/easyant/core/trunk/src/test/java/org/apache/easyant/core/ModuleInheritanceTest.java?rev=1071697&view=auto
==============================================================================
--- incubator/easyant/core/trunk/src/test/java/org/apache/easyant/core/ModuleInheritanceTest.java (added)
+++ incubator/easyant/core/trunk/src/test/java/org/apache/easyant/core/ModuleInheritanceTest.java Thu Feb 17 17:01:07 2011
@@ -0,0 +1,52 @@
+/* 
+ *  Copyright 2008-2010 the EasyAnt project
+ * 
+ *  See the NOTICE file distributed with this work for additional information
+ *  regarding copyright ownership. 
+ * 
+ *  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 org.apache.easyant.core;
+
+import org.apache.tools.ant.Project;
+
+public class ModuleInheritanceTest extends EasyAntBaseTest {
+	
+	protected void setUp() throws Exception {
+		configureProject(this.getResource("multimodule/myapp-core/module.ivy"),Project.MSG_INFO);
+		
+		//Configure easyant ivy instance
+		conf.setEasyantIvySettingsUrl(this.getClass().getResource("/org/apache/easyant/core/default-easyant-ivysettings.xml"));
+
+		//init project with easyant configuration
+		initProject();
+	}
+	
+	public void clean() throws Exception {
+		executeTarget("clean:clean");
+	}
+    
+    public void testInheritablePluginWithScopeChild() throws Exception {
+    	clean();
+    	executeTarget("source-jar:init");
+    }
+    
+    public void testNonInheritableElements() throws Exception {
+    	clean();
+    	expectBuildException("eadoc:init", "Target \"eadoc:init\" does not exist in the project \"myapp-core\"");
+    	expectPropertyUnset("validate", "my.property");
+    }
+    
+    
+    
+}

Propchange: incubator/easyant/core/trunk/src/test/java/org/apache/easyant/core/ModuleInheritanceTest.java
------------------------------------------------------------------------------
    svn:eol-style = native

Propchange: incubator/easyant/core/trunk/src/test/java/org/apache/easyant/core/ModuleInheritanceTest.java
------------------------------------------------------------------------------
    svn:keywords = Date Revision Author HeadURL Id

Propchange: incubator/easyant/core/trunk/src/test/java/org/apache/easyant/core/ModuleInheritanceTest.java
------------------------------------------------------------------------------
    svn:mime-type = text/plain

Added: incubator/easyant/core/trunk/src/test/java/org/apache/easyant/core/PropertiesAsAttributesTest.java
URL: http://svn.apache.org/viewvc/incubator/easyant/core/trunk/src/test/java/org/apache/easyant/core/PropertiesAsAttributesTest.java?rev=1071697&view=auto
==============================================================================
--- incubator/easyant/core/trunk/src/test/java/org/apache/easyant/core/PropertiesAsAttributesTest.java (added)
+++ incubator/easyant/core/trunk/src/test/java/org/apache/easyant/core/PropertiesAsAttributesTest.java Thu Feb 17 17:01:07 2011
@@ -0,0 +1,79 @@
+/* 
+ *  Copyright 2008-2010 the EasyAnt project
+ * 
+ *  See the NOTICE file distributed with this work for additional information
+ *  regarding copyright ownership. 
+ * 
+ *  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 org.apache.easyant.core;
+
+import org.apache.tools.ant.Project;
+import org.junit.Before;
+import org.junit.Test;
+
+public class PropertiesAsAttributesTest extends EasyAntBaseTest {
+	
+ 	@Before
+	public void setUp() throws Exception {
+ 		
+		configureProject(this.getResource("propertiesAsAttributes.ivy"),Project.MSG_INFO);
+		
+		//Configure easyant ivy instance
+		conf.setEasyantIvySettingsUrl(this.getClass().getResource("/org/apache/easyant/core/default-easyant-ivysettings.xml"));
+
+		//init project with easyant configuration
+		initProject();
+	}
+	
+	@Test
+	public void testClean() throws Exception {
+		executeTarget("clean:clean");
+	}
+    
+	@Test
+    public void testPropertiesInBuildType() throws Exception {
+    	expectPropertySet("validate", "my.property.inbuildtype","true");
+
+    	//properties loaded by build configuration 
+    	expectPropertyUnset("validate", "my.property.inconf");
+    }
+	
+	@Test
+    public void testPropertiesInPlugin() throws Exception {
+    	expectPropertySet("validate", "my.property.inplugin","true");
+    
+    	//properties loaded by build configuration 
+    	expectPropertyUnset("validate", "my.property.inconf");
+    }
+	
+	@Test
+    public void testPropertiesInBuildConfiguration() throws Exception {
+		conf.getActiveBuildConfigurations().add("myBuild");
+
+		//re-init project with easyant configuration including build types
+		initProject();
+
+		expectPropertySet("validate", "my.property.inplugin","true");
+	    
+    	//properties loaded by build configuration 
+    	expectPropertySet("validate", "my.property.inconf","true");
+    }
+    
+	@Test
+    public void testVerify() throws Exception {
+    	testClean();
+    	executeTarget("verify");
+    }
+    
+}

Propchange: incubator/easyant/core/trunk/src/test/java/org/apache/easyant/core/PropertiesAsAttributesTest.java
------------------------------------------------------------------------------
    svn:eol-style = native

Propchange: incubator/easyant/core/trunk/src/test/java/org/apache/easyant/core/PropertiesAsAttributesTest.java
------------------------------------------------------------------------------
    svn:keywords = Date Revision Author HeadURL Id

Propchange: incubator/easyant/core/trunk/src/test/java/org/apache/easyant/core/PropertiesAsAttributesTest.java
------------------------------------------------------------------------------
    svn:mime-type = text/plain

Added: incubator/easyant/core/trunk/src/test/java/org/apache/easyant/core/StandardJavaProjectTest.java
URL: http://svn.apache.org/viewvc/incubator/easyant/core/trunk/src/test/java/org/apache/easyant/core/StandardJavaProjectTest.java?rev=1071697&view=auto
==============================================================================
--- incubator/easyant/core/trunk/src/test/java/org/apache/easyant/core/StandardJavaProjectTest.java (added)
+++ incubator/easyant/core/trunk/src/test/java/org/apache/easyant/core/StandardJavaProjectTest.java Thu Feb 17 17:01:07 2011
@@ -0,0 +1,67 @@
+/* 
+ *  Copyright 2008-2010 the EasyAnt project
+ * 
+ *  See the NOTICE file distributed with this work for additional information
+ *  regarding copyright ownership. 
+ * 
+ *  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 org.apache.easyant.core;
+
+import org.apache.tools.ant.Project;
+
+public class StandardJavaProjectTest extends EasyAntBaseTest {
+	
+	protected void setUp() throws Exception {
+		configureProject(this.getResource("standardJavaProject.ivy"),Project.MSG_INFO);
+		
+		//Configure easyant ivy instance
+		conf.setEasyantIvySettingsUrl(this.getClass().getResource("/org/apache/easyant/core/default-easyant-ivysettings.xml"));
+
+		//init project with easyant configuration
+		initProject();
+	}
+	
+	public void testClean() throws Exception {
+		executeTarget("clean:clean");
+	}
+    
+    public void testValidate() throws Exception {
+    	expectPropertySet("validate", "default.build.number", "10");
+    }
+    
+    public void testPackage() throws Exception {
+    	testClean();
+    	executeTarget("package");
+    }
+    
+    public void testImportWithoutAsAttribute() throws Exception {
+    	testClean();
+    	//<ea:plugin module="javadoc" revision="0.1"/>
+    	//no "as" attribute is specified, easyant should prefix all targets with "module" value by default
+    	executeTarget("javadoc:javadoc");
+    }
+    
+    public void testImportWithAsAttribute() throws Exception {
+    	testClean();
+    	//<ea:plugin module="javadoc" revision="0.1" as="foobar"/>
+    	executeTarget("foobar:javadoc");
+    }
+
+    
+    public void testVerify() throws Exception {
+    	testClean();
+    	executeTarget("verify");
+    }
+    
+}

Propchange: incubator/easyant/core/trunk/src/test/java/org/apache/easyant/core/StandardJavaProjectTest.java
------------------------------------------------------------------------------
    svn:eol-style = native

Propchange: incubator/easyant/core/trunk/src/test/java/org/apache/easyant/core/StandardJavaProjectTest.java
------------------------------------------------------------------------------
    svn:keywords = Date Revision Author HeadURL Id

Propchange: incubator/easyant/core/trunk/src/test/java/org/apache/easyant/core/StandardJavaProjectTest.java
------------------------------------------------------------------------------
    svn:mime-type = text/plain

Added: incubator/easyant/core/trunk/src/test/java/org/apache/easyant/core/services/PluginServiceTest.java
URL: http://svn.apache.org/viewvc/incubator/easyant/core/trunk/src/test/java/org/apache/easyant/core/services/PluginServiceTest.java?rev=1071697&view=auto
==============================================================================
--- incubator/easyant/core/trunk/src/test/java/org/apache/easyant/core/services/PluginServiceTest.java (added)
+++ incubator/easyant/core/trunk/src/test/java/org/apache/easyant/core/services/PluginServiceTest.java Thu Feb 17 17:01:07 2011
@@ -0,0 +1,167 @@
+/* 
+ *  Copyright 2008-2010 the EasyAnt project
+ * 
+ *  See the NOTICE file distributed with this work for additional information
+ *  regarding copyright ownership. 
+ * 
+ *  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 org.apache.easyant.core.services;
+
+import java.io.File;
+import java.io.IOException;
+import java.text.ParseException;
+import java.util.Arrays;
+import java.util.HashSet;
+import java.util.List;
+import java.util.Set;
+
+import junit.framework.Assert;
+
+import org.apache.easyant.core.EasyAntMagicNames;
+import org.apache.easyant.core.descriptor.PropertyDescriptor;
+import org.apache.easyant.core.report.EasyAntReport;
+import org.apache.easyant.core.report.ImportedModuleReport;
+import org.apache.easyant.core.report.PhaseReport;
+import org.apache.easyant.core.report.TargetReport;
+import org.apache.easyant.core.services.impl.DefaultPluginServiceImpl;
+import org.apache.ivy.Ivy;
+import org.apache.ivy.core.IvyContext;
+import org.apache.ivy.core.module.id.ModuleRevisionId;
+import org.apache.ivy.plugins.matcher.PatternMatcher;
+import org.junit.BeforeClass;
+import org.junit.Test;
+
+public class PluginServiceTest {
+
+	private static PluginService pluginService;
+
+	@BeforeClass
+	public static void setUp() throws ParseException, IOException {
+		// configure the ivyinstance
+		Ivy ivy = IvyContext.pushNewContext().getIvy();
+		ivy.setVariable(EasyAntMagicNames.EASYANT_CORE_REPO_URL,
+				PluginServiceTest.class.getResource(
+						"/org/apache/easyant/core/repository/modules")
+						.toExternalForm());
+		ivy
+				.configure(PluginServiceTest.class
+						.getResource("/org/apache/easyant/core/default-easyant-ivysettings.xml"));
+		pluginService = new DefaultPluginServiceImpl(ivy);
+
+	}
+
+	@Test
+	public void testDefaultResolverSearch() throws Exception {
+		ModuleRevisionId[] mrids = pluginService.search(
+				"org.apache.easyant.buildtypes", "build-std-java");
+		// the module should be found once in easyant repo default resolver
+		Assert.assertEquals(1, mrids.length);
+	}
+
+	@Test
+	public void testSearchAllResolvers() throws Exception {
+		ModuleRevisionId[] mrids = pluginService.search(
+				"org.apache.easyant.buildtypes", "build-std-java",
+				null, null, PatternMatcher.EXACT, "*");
+		// the module should be found once each in easyant repo and in chained resolver
+		Assert.assertEquals(2, mrids.length);
+		Assert.assertEquals(mrids[0], mrids[1]);
+	}
+
+	@Test
+	public void testSearchModule() throws Exception {
+		String[] mrids = pluginService.searchModule(
+				"org.apache.easyant.buildtypes", "build-std-java");
+		// the module should be found once in easyant repo default resolver
+		Assert.assertEquals(1, mrids.length);
+	}
+
+	@Test
+	public void testGenerateReport() throws Exception {
+		File module = new File("example/standard-java-app/module.ivy");
+		EasyAntReport eaReport = pluginService.generateEasyAntReport(module);
+		Assert.assertNotNull(eaReport);
+
+		// the report should contain the run-java plugin
+		boolean containsBuildType = false;
+		boolean containsPlugin = true;
+		for (ImportedModuleReport importedModule : eaReport
+				.getImportedModuleReports()) {
+			if (importedModule.getModuleMrid().equals(
+					"org.apache.easyant.buildtypes#build-std-java;0.2")) {
+				containsBuildType = true;
+			}
+			if (importedModule.getModuleMrid().equals(
+					"org.apache.easyant.plugins#run;0.1")
+					&& importedModule.getAs().equals("run")) {
+				containsPlugin = true;
+			}
+		}
+		Assert.assertTrue(containsBuildType);
+		Assert.assertTrue(containsPlugin);
+
+		// be sure that the property exist
+		PropertyDescriptor property = eaReport.getPropertyDescriptors().get(
+				"run.main.classname");
+		Assert.assertNotNull(property);
+		// check the value of the property
+		Assert.assertEquals("org.apache.easyant.example.Example", property
+				.getValue());
+
+		// be sure that the property exist
+		PropertyDescriptor srcMainJava = eaReport.getAvailableProperties().get(
+				"src.main.java");
+		Assert.assertNotNull(srcMainJava);
+		// check the value of the property
+		Assert.assertEquals("${basedir}/src/main/java", srcMainJava
+				.getValue());
+
+		// the property should also be contained in getAvailableProperties which
+		// list all properties (those for the current module and those in
+		// imported modules)
+		property = eaReport.getAvailableProperties().get("run.main.classname");
+		Assert.assertNotNull(property);
+		// check the value of the property
+		Assert.assertEquals("org.apache.easyant.example.Example", property
+				.getValue());
+
+		// check that package phase exists and that jar:jar target is bound to
+		// this phase
+		PhaseReport packagePhase = null;
+		for (PhaseReport phase : eaReport.getAvailablePhases()) {
+			if ("package".equals(phase.getName())) {
+				packagePhase = phase;
+				break;
+			}
+		}
+
+		Assert.assertNotNull(packagePhase);
+        List<TargetReport> targets = packagePhase.getTargetReports();
+        Set<String> expectedTargets = new HashSet<String>(Arrays.asList("jar:jar", "test-jar:jar"));
+        Assert.assertEquals("test and main jars included in package phase", expectedTargets.size(), targets.size());
+
+		for (TargetReport target : packagePhase.getTargetReports()) {
+            Assert.assertTrue("expected to find " + target.getName(), expectedTargets.remove(target.getName()));
+		}
+	}
+
+	@Test
+	public void testGetDescription() throws Exception {
+		String description = pluginService
+				.getPluginDescription("org.apache.easyant.plugins#run-java;0.1");
+		Assert.assertEquals(
+				"This module provides java bytecode execution feature.",
+				description);
+	}
+}

Propchange: incubator/easyant/core/trunk/src/test/java/org/apache/easyant/core/services/PluginServiceTest.java
------------------------------------------------------------------------------
    svn:eol-style = native

Propchange: incubator/easyant/core/trunk/src/test/java/org/apache/easyant/core/services/PluginServiceTest.java
------------------------------------------------------------------------------
    svn:keywords = Date Revision Author HeadURL Id

Propchange: incubator/easyant/core/trunk/src/test/java/org/apache/easyant/core/services/PluginServiceTest.java
------------------------------------------------------------------------------
    svn:mime-type = text/plain

Added: incubator/easyant/core/trunk/src/test/resources/org/apache/easyant/core/multimodule/module.ivy
URL: http://svn.apache.org/viewvc/incubator/easyant/core/trunk/src/test/resources/org/apache/easyant/core/multimodule/module.ivy?rev=1071697&view=auto
==============================================================================
--- incubator/easyant/core/trunk/src/test/resources/org/apache/easyant/core/multimodule/module.ivy (added)
+++ incubator/easyant/core/trunk/src/test/resources/org/apache/easyant/core/multimodule/module.ivy Thu Feb 17 17:01:07 2011
@@ -0,0 +1,23 @@
+<!--
+	Copyright 2008-2010 the EasyAnt project
+	
+	See the NOTICE file distributed with this work for additional information 
+	regarding copyright ownership.
+	
+	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.  
+-->
+<ivy-module version="2.0" xmlns:ea="http://www.easyant.org"> 
+	<info organisation="org.apache.easyant" module="myapp-orchestrator" revision="0.2" status="integration" >
+		<ea:build module="meta-build" revision="0.2"/>
+	</info>
+</ivy-module>

Propchange: incubator/easyant/core/trunk/src/test/resources/org/apache/easyant/core/multimodule/module.ivy
------------------------------------------------------------------------------
    svn:eol-style = native

Propchange: incubator/easyant/core/trunk/src/test/resources/org/apache/easyant/core/multimodule/module.ivy
------------------------------------------------------------------------------
    svn:keywords = Date Revision Author HeadURL Id

Propchange: incubator/easyant/core/trunk/src/test/resources/org/apache/easyant/core/multimodule/module.ivy
------------------------------------------------------------------------------
    svn:mime-type = text/xml

Added: incubator/easyant/core/trunk/src/test/resources/org/apache/easyant/core/multimodule/myapp-core/module.ivy
URL: http://svn.apache.org/viewvc/incubator/easyant/core/trunk/src/test/resources/org/apache/easyant/core/multimodule/myapp-core/module.ivy?rev=1071697&view=auto
==============================================================================
--- incubator/easyant/core/trunk/src/test/resources/org/apache/easyant/core/multimodule/myapp-core/module.ivy (added)
+++ incubator/easyant/core/trunk/src/test/resources/org/apache/easyant/core/multimodule/myapp-core/module.ivy Thu Feb 17 17:01:07 2011
@@ -0,0 +1,24 @@
+<!--
+	Copyright 2008-2010 the EasyAnt project
+	
+	See the NOTICE file distributed with this work for additional information 
+	regarding copyright ownership.
+	
+	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.  
+-->
+<ivy-module version="2.0" xmlns:ea="http://www.easyant.org"> 
+	<info organisation="org.apache.easyant" module="myapp-core" revision="0.2" status="integration">
+		<extends organisation="org.apache.easyant" module="myapp-parent" revision="latest.revision" location="../parent.ivy"/>
+		<ea:build module="build-std-java" revision="0.2"/>
+	</info>
+</ivy-module>

Propchange: incubator/easyant/core/trunk/src/test/resources/org/apache/easyant/core/multimodule/myapp-core/module.ivy
------------------------------------------------------------------------------
    svn:eol-style = native

Propchange: incubator/easyant/core/trunk/src/test/resources/org/apache/easyant/core/multimodule/myapp-core/module.ivy
------------------------------------------------------------------------------
    svn:keywords = Date Revision Author HeadURL Id

Propchange: incubator/easyant/core/trunk/src/test/resources/org/apache/easyant/core/multimodule/myapp-core/module.ivy
------------------------------------------------------------------------------
    svn:mime-type = text/xml

Added: incubator/easyant/core/trunk/src/test/resources/org/apache/easyant/core/multimodule/myapp-hello-world/module.ivy
URL: http://svn.apache.org/viewvc/incubator/easyant/core/trunk/src/test/resources/org/apache/easyant/core/multimodule/myapp-hello-world/module.ivy?rev=1071697&view=auto
==============================================================================
--- incubator/easyant/core/trunk/src/test/resources/org/apache/easyant/core/multimodule/myapp-hello-world/module.ivy (added)
+++ incubator/easyant/core/trunk/src/test/resources/org/apache/easyant/core/multimodule/myapp-hello-world/module.ivy Thu Feb 17 17:01:07 2011
@@ -0,0 +1,33 @@
+<!--
+	Copyright 2008-2010 the EasyAnt project
+	
+	See the NOTICE file distributed with this work for additional information 
+	regarding copyright ownership.
+	
+	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.  
+-->
+<ivy-module version="2.0" xmlns:ea="http://www.easyant.org"> 
+	<info organisation="org.apache.easyant" module="myapp-hello-world" revision="0.2" status="integration" >
+		<ea:build module="build-std-java" revision="0.2">
+			<ea:property name="run.main.classname" value="org.apache.easyant.example.Example"/>
+	    </ea:build>
+
+	</info>
+	<configurations>
+		<conf name="default" visibility="public" description="runtime dependencies and master artifact can be used with this conf"/>
+		<conf name="test" visibility="private" description="this scope indicates that the dependency is not required for normal use of the application, and is only available for the test compilation and execution phases."/>
+	</configurations>
+	<dependencies>
+		<dependency org="org.apache.easyant" name="myapp-core" rev="latest.revision" conf="default->default"/>
+	</dependencies>
+</ivy-module>

Propchange: incubator/easyant/core/trunk/src/test/resources/org/apache/easyant/core/multimodule/myapp-hello-world/module.ivy
------------------------------------------------------------------------------
    svn:eol-style = native

Propchange: incubator/easyant/core/trunk/src/test/resources/org/apache/easyant/core/multimodule/myapp-hello-world/module.ivy
------------------------------------------------------------------------------
    svn:keywords = Date Revision Author HeadURL Id

Propchange: incubator/easyant/core/trunk/src/test/resources/org/apache/easyant/core/multimodule/myapp-hello-world/module.ivy
------------------------------------------------------------------------------
    svn:mime-type = text/xml

Added: incubator/easyant/core/trunk/src/test/resources/org/apache/easyant/core/multimodule/parent.ivy
URL: http://svn.apache.org/viewvc/incubator/easyant/core/trunk/src/test/resources/org/apache/easyant/core/multimodule/parent.ivy?rev=1071697&view=auto
==============================================================================
--- incubator/easyant/core/trunk/src/test/resources/org/apache/easyant/core/multimodule/parent.ivy (added)
+++ incubator/easyant/core/trunk/src/test/resources/org/apache/easyant/core/multimodule/parent.ivy Thu Feb 17 17:01:07 2011
@@ -0,0 +1,29 @@
+<!--
+	Copyright 2008-2010 the EasyAnt project
+	
+	See the NOTICE file distributed with this work for additional information 
+	regarding copyright ownership.
+	
+	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.  
+-->
+<ivy-module version="2.0" xmlns:ea="http://www.easyant.org"> 
+	<info organisation="org.apache.easyant" module="myapp-parent" revision="0.2" status="integration" >
+		<ea:property name="test" value="zz"/>
+		<ea:plugin module="source-jar" revision="0.1" inherit-scope="child" />
+		<ea:plugin module="eadoc" revision="0.1" inheritable="false" my.property="myvalue"/>
+	</info>
+	<configurations>
+		<conf name="default" visibility="public" description="runtime dependencies and master artifact can be used with this conf"/>
+		<conf name="test" visibility="private" description="this scope indicates that the dependency is not required for normal use of the application, and is only available for the test compilation and execution phases."/>
+	</configurations>
+</ivy-module>

Propchange: incubator/easyant/core/trunk/src/test/resources/org/apache/easyant/core/multimodule/parent.ivy
------------------------------------------------------------------------------
    svn:eol-style = native

Propchange: incubator/easyant/core/trunk/src/test/resources/org/apache/easyant/core/multimodule/parent.ivy
------------------------------------------------------------------------------
    svn:keywords = Date Revision Author HeadURL Id

Propchange: incubator/easyant/core/trunk/src/test/resources/org/apache/easyant/core/multimodule/parent.ivy
------------------------------------------------------------------------------
    svn:mime-type = text/xml

Added: incubator/easyant/core/trunk/src/test/resources/org/apache/easyant/core/propertiesAsAttributes.ivy
URL: http://svn.apache.org/viewvc/incubator/easyant/core/trunk/src/test/resources/org/apache/easyant/core/propertiesAsAttributes.ivy?rev=1071697&view=auto
==============================================================================
--- incubator/easyant/core/trunk/src/test/resources/org/apache/easyant/core/propertiesAsAttributes.ivy (added)
+++ incubator/easyant/core/trunk/src/test/resources/org/apache/easyant/core/propertiesAsAttributes.ivy Thu Feb 17 17:01:07 2011
@@ -0,0 +1,31 @@
+<!--
+	Copyright 2008-2010 the EasyAnt project
+	
+	See the NOTICE file distributed with this work for additional information 
+	regarding copyright ownership.
+	
+	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.  
+-->
+<ivy-module version="2.0" xmlns:ea="http://www.easyant.org"> 
+	<info organisation="org.apache.easyant" module="standard-java-app" status="integration" >
+		<ea:build mrid="org.apache.easyant.buildtypes#build-std-java;0.2" my.property.inbuildtype="true"/>
+		<ea:plugin module="javadoc" revision="0.1" my.property.inplugin="true"/>
+		<ea:plugin module="javadoc" revision="0.1" my-dashes="true" my.property.inconf="true" conf="myBuild"/>
+		
+ 	</info>
+	<configurations>
+		<conf name="default" visibility="public" description="runtime dependencies and master artifact can be used with this conf"/>
+		<conf name="test" visibility="private" description="this scope indicates that the dependency is not required for normal use of the application, and is only available for the test compilation and execution phases."/>
+		<conf name="myBuild" ea:type="profile"/>
+	</configurations>
+</ivy-module>

Propchange: incubator/easyant/core/trunk/src/test/resources/org/apache/easyant/core/propertiesAsAttributes.ivy
------------------------------------------------------------------------------
    svn:eol-style = native

Propchange: incubator/easyant/core/trunk/src/test/resources/org/apache/easyant/core/propertiesAsAttributes.ivy
------------------------------------------------------------------------------
    svn:keywords = Date Revision Author HeadURL Id

Propchange: incubator/easyant/core/trunk/src/test/resources/org/apache/easyant/core/propertiesAsAttributes.ivy
------------------------------------------------------------------------------
    svn:mime-type = text/xml

Added: incubator/easyant/core/trunk/src/test/resources/org/apache/easyant/core/standardJavaProject.ivy
URL: http://svn.apache.org/viewvc/incubator/easyant/core/trunk/src/test/resources/org/apache/easyant/core/standardJavaProject.ivy?rev=1071697&view=auto
==============================================================================
--- incubator/easyant/core/trunk/src/test/resources/org/apache/easyant/core/standardJavaProject.ivy (added)
+++ incubator/easyant/core/trunk/src/test/resources/org/apache/easyant/core/standardJavaProject.ivy Thu Feb 17 17:01:07 2011
@@ -0,0 +1,31 @@
+<!--
+	Copyright 2008-2010 the EasyAnt project
+	
+	See the NOTICE file distributed with this work for additional information 
+	regarding copyright ownership.
+	
+	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.  
+-->
+<ivy-module version="2.0" xmlns:ea="http://www.easyant.org"> 
+	<info organisation="org.apache.easyant" module="standard-java-app" status="integration" >
+		<ea:build mrid="org.apache.easyant.buildtypes#build-std-java;0.2">
+			<ea:property name="default.build.number" value="10"/>
+       	</ea:build>
+       	<ea:plugin module="javadoc" revision="0.1"/>
+       	<ea:plugin module="javadoc" revision="0.1" as="foobar"/>
+	</info>
+	<configurations>
+		<conf name="default" visibility="public" description="runtime dependencies and master artifact can be used with this conf"/>
+		<conf name="test" visibility="private" description="this scope indicates that the dependency is not required for normal use of the application, and is only available for the test compilation and execution phases."/>
+	</configurations>
+</ivy-module>

Propchange: incubator/easyant/core/trunk/src/test/resources/org/apache/easyant/core/standardJavaProject.ivy
------------------------------------------------------------------------------
    svn:eol-style = native

Propchange: incubator/easyant/core/trunk/src/test/resources/org/apache/easyant/core/standardJavaProject.ivy
------------------------------------------------------------------------------
    svn:keywords = Date Revision Author HeadURL Id

Propchange: incubator/easyant/core/trunk/src/test/resources/org/apache/easyant/core/standardJavaProject.ivy
------------------------------------------------------------------------------
    svn:mime-type = text/xml

Added: incubator/easyant/plugins/trunk/abstract-coverage/module.ivy
URL: http://svn.apache.org/viewvc/incubator/easyant/plugins/trunk/abstract-coverage/module.ivy?rev=1071697&view=auto
==============================================================================
--- incubator/easyant/plugins/trunk/abstract-coverage/module.ivy (added)
+++ incubator/easyant/plugins/trunk/abstract-coverage/module.ivy Thu Feb 17 17:01:07 2011
@@ -0,0 +1,35 @@
+<!--
+	Copyright 2008-2010 the EasyAnt project
+	
+	See the NOTICE file distributed with this work for additional information 
+	regarding copyright ownership.
+	
+	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.  
+-->
+<ivy-module version="2.0" xmlns:ea="http://www.easyant.org"> 
+	<info organisation="org.apache.easyant.plugins" module="abstract-coverage" revision="0.1">
+	       <description>Abstract base plugin, that any modules providing
+	       test code coverage features should include.  abstract-coverage
+	       defines common configuration properties governing code coverage
+	       behavior.</description>
+	       <ea:build organisation="org.apache.easyant.buildtypes" module="build-std-ant-plugin" revision="0.1"/>
+        </info>
+        <configurations>
+                <conf name="default" description="runtime dependencies artifact can be used with this conf"/>
+                <conf name="test" description="this scope indicates that the dependency is not required for normal use of the application, and is only available for the test compilation and execution phases."/>
+                <conf name="provided" description="this is much like compile, but indicates you expect the JDK or a container to provide it. It is only available on the compilation classpath, and is not transitive."/>
+        </configurations>
+	<publications>
+		<artifact type="ant"/>
+	</publications>
+</ivy-module>

Propchange: incubator/easyant/plugins/trunk/abstract-coverage/module.ivy
------------------------------------------------------------------------------
    svn:eol-style = native

Propchange: incubator/easyant/plugins/trunk/abstract-coverage/module.ivy
------------------------------------------------------------------------------
    svn:keywords = Date Revision Author HeadURL Id

Propchange: incubator/easyant/plugins/trunk/abstract-coverage/module.ivy
------------------------------------------------------------------------------
    svn:mime-type = text/xml

Added: incubator/easyant/plugins/trunk/abstract-coverage/src/main/resources/abstract-coverage.ant
URL: http://svn.apache.org/viewvc/incubator/easyant/plugins/trunk/abstract-coverage/src/main/resources/abstract-coverage.ant?rev=1071697&view=auto
==============================================================================
--- incubator/easyant/plugins/trunk/abstract-coverage/src/main/resources/abstract-coverage.ant (added)
+++ incubator/easyant/plugins/trunk/abstract-coverage/src/main/resources/abstract-coverage.ant Thu Feb 17 17:01:07 2011
@@ -0,0 +1,47 @@
+<!--
+	Copyright 2008-2010 the EasyAnt project
+	
+	See the NOTICE file distributed with this work for additional information 
+	regarding copyright ownership.
+	
+	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.
+-->
+<project name="org.apache.easyant.plugins#abstract-coverage"
+	xmlns:ea="antlib:org.apache.easyant">
+
+	<ea:core-version requiredrevision="[0.8,+]" />
+	
+	<target name=":init" phase="validate" description="defines a common set of configuration parameters used by code coverage tools">
+		<ea:parameter phase="validate" />
+		<ea:parameter phase="process-classes" />
+		<ea:parameter phase="report" />
+
+		<ea:parameter property="target.main.classes" required="true" description="destination directory for compiled test classes" />
+		<ea:parameter property="target.test.classes" required="true" description="destination directory for compiled coverage test classes" />
+		
+		<ea:parameter property="target" default="target" description="the target directory" />
+		<ea:parameter property="target.report" default="${target}/report" description="the target report directory" />
+	
+		<ea:parameter property="coverage.exclude.filter" default="" description="a list of pattern that coverage framework will ignore during instrumentation phase" />
+		<ea:parameter property="coverage.verbosity" default="info" description="coverage verbosity" />
+		<ea:parameter property="coverage.report.name" default="coverage" description="the name of the generated report (without file type)" />
+
+		<ea:parameter property="target.coverage.classes" default="${target}/coverage/classes" description="directory where coverage classes will be generated" />
+		<ea:parameter property="target.coverage.report" default="${target.report}/coverage" description="directory where coverage report will be generated" />
+		
+		<ea:parameter path="compile.test.classpath" required="true" description="test compilation path" />
+		
+		<available file="${src.test.java}" property="has.src.test.java" />
+	</target>
+
+</project>

Propchange: incubator/easyant/plugins/trunk/abstract-coverage/src/main/resources/abstract-coverage.ant
------------------------------------------------------------------------------
    svn:eol-style = native

Propchange: incubator/easyant/plugins/trunk/abstract-coverage/src/main/resources/abstract-coverage.ant
------------------------------------------------------------------------------
    svn:keywords = Date Revision Author HeadURL Id

Propchange: incubator/easyant/plugins/trunk/abstract-coverage/src/main/resources/abstract-coverage.ant
------------------------------------------------------------------------------
    svn:mime-type = text/xml

Added: incubator/easyant/plugins/trunk/abstract-test/module.ivy
URL: http://svn.apache.org/viewvc/incubator/easyant/plugins/trunk/abstract-test/module.ivy?rev=1071697&view=auto
==============================================================================
--- incubator/easyant/plugins/trunk/abstract-test/module.ivy (added)
+++ incubator/easyant/plugins/trunk/abstract-test/module.ivy Thu Feb 17 17:01:07 2011
@@ -0,0 +1,40 @@
+<!--
+	Copyright 2008-2010 the EasyAnt project
+	
+	See the NOTICE file distributed with this work for additional information 
+	regarding copyright ownership.
+	
+	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.  
+-->
+<ivy-module version="2.0" xmlns:ea="http://www.easyant.org"> 
+	<info organisation="org.apache.easyant.plugins" module="abstract-test" revision="0.1">
+	       <description>This module provides tests compilation feature.<br/>
+This module initialize compile.test.classpath and run.test.classpath.<br/>
+Tests can be skipped using skip.test property.</description>
+	       <ea:build organisation="org.apache.easyant.buildtypes" module="build-std-ant-plugin" revision="0.1"/>
+        </info>
+        <configurations>
+                <conf name="default" description="runtime dependencies artifact can be used with this conf"/>
+                <conf name="test" description="this scope indicates that the dependency is not required for normal use of the application, and is only available for the test compilation and execution phases."/>
+                <conf name="provided" description="this is much like compile, but indicates you expect the JDK or a container to provide it. It is only available on the compilation classpath, and is not transitive."/>
+        </configurations>
+	<publications>
+		<artifact type="ant"/>
+	</publications>
+	
+	<dependencies>
+		<dependency org="org.apache.ant" name="ant-junit" rev="1.8.2"/>
+
+	</dependencies>
+	
+</ivy-module>

Propchange: incubator/easyant/plugins/trunk/abstract-test/module.ivy
------------------------------------------------------------------------------
    svn:eol-style = native

Propchange: incubator/easyant/plugins/trunk/abstract-test/module.ivy
------------------------------------------------------------------------------
    svn:keywords = Date Revision Author HeadURL Id

Propchange: incubator/easyant/plugins/trunk/abstract-test/module.ivy
------------------------------------------------------------------------------
    svn:mime-type = text/xml

Added: incubator/easyant/plugins/trunk/abstract-test/src/main/resources/abstract-test.ant
URL: http://svn.apache.org/viewvc/incubator/easyant/plugins/trunk/abstract-test/src/main/resources/abstract-test.ant?rev=1071697&view=auto
==============================================================================
--- incubator/easyant/plugins/trunk/abstract-test/src/main/resources/abstract-test.ant (added)
+++ incubator/easyant/plugins/trunk/abstract-test/src/main/resources/abstract-test.ant Thu Feb 17 17:01:07 2011
@@ -0,0 +1,122 @@
+<!--
+	Copyright 2008-2010 the EasyAnt project
+	
+	See the NOTICE file distributed with this work for additional information 
+	regarding copyright ownership.
+	
+	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.
+-->
+<project name="org.apache.easyant.plugins#abstract-test"
+	xmlns:ac="antlib:net.sf.antcontrib"
+	xmlns:ea="antlib:org.apache.easyant">
+
+	<ea:core-version requiredrevision="[0.8,+]" />
+	
+	<target name=":init" phase="validate">
+		<ea:parameter phase="validate" />
+		<ea:parameter phase="compile" />
+		<ea:parameter phase="test-compile" />
+		<ea:parameter phase="test" />
+
+		<ea:parameter property="src.test.java" required="true" 
+			description="directory with unit test source files" />
+		<ea:parameter property="src.test.integration.java" default="${basedir}/src/integration-test/java" 
+				description="directory for integration test source files" />
+
+        <ea:parameter property="src.test.resources" default="${basedir}/src/test/resources"
+            description="directory with unit test resource files (configuration files, data files, etc)" />
+        <ea:parameter property="src.test.integration.resources" default="${basedir}/src/integration-test/resources"
+                description="directory for integration test resources (configuration files, data files, etc)"/>
+
+		<ea:parameter property="target.main.classes" required="true" 
+			description="directory where main compiled classes are" />
+		<ea:parameter property="target.test.classes" required="true" 
+			description="destination directory for compiled unit test classes" />
+		<ea:parameter property="target.test.integration.classes" default="${basedir}/target/integration-test/classes" 
+				description="destination directory for compiled integration test classes" />
+
+		
+		<ea:parameter property="target.test.xml" required="true" 
+			description="destination directory for xml test report" />
+		<ea:parameter property="target.test.html" required="true" 
+			description="destination directory for html test report" />
+		
+		<ea:parameter property="test.mode" default="run"
+			description="mode to use to execute tests: 'run' to only run tests, 'report' to generate html report" />
+		<ea:parameter property="javac.debug.mode" default="true" 
+			description="javac debug mode, true or false" />
+		<ea:parameter property="test.compile.includes.pattern" default="**/*.java" 
+			description="Pattern describing files included in test compilation process" />
+		<ea:parameter property="test.compile.excludes.pattern" default="" 
+			description="Pattern describing files excluded in test compilation process" />
+		<ea:parameter property="test.integration.compile.includes.pattern" default="**/*.java" 
+			description="Pattern describing files included in integration test compilation process" />
+		<ea:parameter property="test.integration.compile.excludes.pattern" default="" 
+			description="Pattern describing files excluded in integration test compilation process" />
+		
+		<ea:parameter property="test.run.failonerror" default="true"
+			description="specify if the build should be stopped when tests are failed. Typically this property should be set to false in continuous environmnent systems"/>
+				
+		
+		<ea:parameter path="compile.main.classpath" required="true" 
+			description="path used to compile main sources" />
+		
+		<path id="compile.test.classpath">
+	            <pathelement location="${target.main.classes}" />
+        	    <path refid="compile.main.classpath" />
+        </path>
+
+		<available file="${src.test.java}" property="has.src.test.java" />
+		<available file="${src.test.integration.java}" property="has.src.test.integration.java"/>
+		
+		<condition property="test.mode.run">
+			<equals arg1="${test.mode}" arg2="run" />
+		</condition>
+		
+		<condition property="test.mode.report">
+			<equals arg1="${test.mode}" arg2="report" />
+		</condition>
+
+        <!-- shouldn't this be in junit plugin? -->
+		<taskdef name="junit" classname="org.apache.tools.ant.taskdefs.optional.junit.JUnitTask" 
+			classpathref="org.apache.easyant.plugins#abstract-test.classpath" />
+		<taskdef name="junitreport" classname="org.apache.tools.ant.taskdefs.optional.junit.XMLResultAggregator"
+			classpathref="org.apache.easyant.plugins#abstract-test.classpath" />
+
+	</target>
+	
+	<macrodef name="check-test-result" description="check test results">
+		<attribute name="propertytocheck"/>
+		<attribute name="message" />
+		<attribute name="echolevel" default="error"/>
+		<sequential>
+			<ac:if>
+				<istrue value="${test.run.failonerror}"/>
+				<ac:then>
+		        	<fail if="@{propertytocheck}" message="@{message}" />
+				</ac:then>
+				<ac:else>
+					<ac:if>
+						<isset property="@{propertytocheck}"/>
+						<ac:then>
+							<echo message="@{message}" level="@{echolevel}"/>
+						</ac:then>
+					</ac:if>
+				</ac:else>
+			</ac:if>
+		</sequential>		
+		
+	</macrodef>
+
+
+</project>

Propchange: incubator/easyant/plugins/trunk/abstract-test/src/main/resources/abstract-test.ant
------------------------------------------------------------------------------
    svn:eol-style = native

Propchange: incubator/easyant/plugins/trunk/abstract-test/src/main/resources/abstract-test.ant
------------------------------------------------------------------------------
    svn:keywords = Date Revision Author HeadURL Id

Propchange: incubator/easyant/plugins/trunk/abstract-test/src/main/resources/abstract-test.ant
------------------------------------------------------------------------------
    svn:mime-type = text/xml

Added: incubator/easyant/plugins/trunk/antcontrib-activator/module.ivy
URL: http://svn.apache.org/viewvc/incubator/easyant/plugins/trunk/antcontrib-activator/module.ivy?rev=1071697&view=auto
==============================================================================
--- incubator/easyant/plugins/trunk/antcontrib-activator/module.ivy (added)
+++ incubator/easyant/plugins/trunk/antcontrib-activator/module.ivy Thu Feb 17 17:01:07 2011
@@ -0,0 +1,37 @@
+<!--
+	Copyright 2008-2010 the EasyAnt project
+	
+	See the NOTICE file distributed with this work for additional information 
+	regarding copyright ownership.
+	
+	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.  
+-->
+<ivy-module version="2.0" xmlns:ea="http://www.easyant.org"> 
+	<info organisation="org.apache.easyant.plugins" module="antcontrib-activator" revision="0.1">
+		<description>
+			This module is in charge to load antcontrib taksdefs.
+		</description>
+	       <ea:build organisation="org.apache.easyant.buildtypes" module="build-std-ant-plugin" revision="0.1"/>
+        </info>
+        <configurations>
+                <conf name="default" description="runtime dependencies artifact can be used with this conf"/>
+                <conf name="test" description="this scope indicates that the dependency is not required for normal use of the application, and is only available for the test compilation and execution phases."/>
+                <conf name="provided" description="this is much like compile, but indicates you expect the JDK or a container to provide it. It is only available on the compilation classpath, and is not transitive."/>
+        </configurations>
+	<publications>
+		<artifact type="ant"/>
+	</publications>
+	<dependencies>
+		<dependency org="ant-contrib" name="ant-contrib" rev="1.0b2"/>
+	</dependencies>
+</ivy-module>

Propchange: incubator/easyant/plugins/trunk/antcontrib-activator/module.ivy
------------------------------------------------------------------------------
    svn:eol-style = native

Propchange: incubator/easyant/plugins/trunk/antcontrib-activator/module.ivy
------------------------------------------------------------------------------
    svn:keywords = Date Revision Author HeadURL Id

Propchange: incubator/easyant/plugins/trunk/antcontrib-activator/module.ivy
------------------------------------------------------------------------------
    svn:mime-type = text/xml

Added: incubator/easyant/plugins/trunk/antcontrib-activator/src/main/resources/antcontrib-activator.ant
URL: http://svn.apache.org/viewvc/incubator/easyant/plugins/trunk/antcontrib-activator/src/main/resources/antcontrib-activator.ant?rev=1071697&view=auto
==============================================================================
--- incubator/easyant/plugins/trunk/antcontrib-activator/src/main/resources/antcontrib-activator.ant (added)
+++ incubator/easyant/plugins/trunk/antcontrib-activator/src/main/resources/antcontrib-activator.ant Thu Feb 17 17:01:07 2011
@@ -0,0 +1,34 @@
+<!--
+	Copyright 2008-2010 the EasyAnt project
+	
+	See the NOTICE file distributed with this work for additional information 
+	regarding copyright ownership.
+	
+	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.
+-->
+<project name="org.apache.easyant.plugins#antcontrib-activator" 
+	xmlns:ea="antlib:org.apache.easyant">
+
+	<ea:core-version requiredrevision="[0.8,+]" />
+
+	<target name=":init" phase="validate">
+		<ea:parameter phase="validate"/>
+
+		<echo level="verbose" message="loading antcontrib"/>
+		
+		<taskdef resource="net/sf/antcontrib/antlib.xml" 
+			classpathref="org.apache.easyant.plugins#antcontrib-activator.classpath"/>
+	</target>
+	
+	<target name="doit" depends=":init" />
+</project>

Propchange: incubator/easyant/plugins/trunk/antcontrib-activator/src/main/resources/antcontrib-activator.ant
------------------------------------------------------------------------------
    svn:eol-style = native

Propchange: incubator/easyant/plugins/trunk/antcontrib-activator/src/main/resources/antcontrib-activator.ant
------------------------------------------------------------------------------
    svn:keywords = Date Revision Author HeadURL Id

Propchange: incubator/easyant/plugins/trunk/antcontrib-activator/src/main/resources/antcontrib-activator.ant
------------------------------------------------------------------------------
    svn:mime-type = text/xml

Added: incubator/easyant/plugins/trunk/antunit/module.ivy
URL: http://svn.apache.org/viewvc/incubator/easyant/plugins/trunk/antunit/module.ivy?rev=1071697&view=auto
==============================================================================
--- incubator/easyant/plugins/trunk/antunit/module.ivy (added)
+++ incubator/easyant/plugins/trunk/antunit/module.ivy Thu Feb 17 17:01:07 2011
@@ -0,0 +1,38 @@
+<!--
+	Copyright 2008-2010 the EasyAnt project
+	
+	See the NOTICE file distributed with this work for additional information 
+	regarding copyright ownership.
+	
+	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.  
+-->
+<ivy-module version="2.0" xmlns:ea="http://www.easyant.org"> 
+	<info organisation="org.apache.easyant.plugins" module="antunit" revision="0.1">
+	       <description>This module provides antunit test features.</description>
+	       <ea:build organisation="org.apache.easyant.buildtypes" module="build-std-ant-plugin" revision="0.1"/>
+        </info>
+        <configurations>
+                <conf name="default" description="runtime dependencies artifact can be used with this conf"/>
+                <conf name="test" description="this scope indicates that the dependency is not required for normal use of the application, and is only available for the test compilation and execution phases."/>
+                <conf name="provided" description="this is much like compile, but indicates you expect the JDK or a container to provide it. It is only available on the compilation classpath, and is not transitive."/>
+        </configurations>
+	<publications>
+		<artifact type="ant"/>
+		<artifact name="junit-frames" type="xsl"/>
+		<artifact name="junit-noframes" type="xsl"/>
+	</publications>
+	<dependencies>
+		<dependency org="org.apache.ant" name="ant-antunit" rev="1.2alpha" conf="default->default"/>
+		<dependency org="org.apache.ant" name="ant-junit" rev="1.7.1" conf="default->default"/>
+	</dependencies>
+</ivy-module>

Propchange: incubator/easyant/plugins/trunk/antunit/module.ivy
------------------------------------------------------------------------------
    svn:eol-style = native

Propchange: incubator/easyant/plugins/trunk/antunit/module.ivy
------------------------------------------------------------------------------
    svn:keywords = Date Revision Author HeadURL Id

Propchange: incubator/easyant/plugins/trunk/antunit/module.ivy
------------------------------------------------------------------------------
    svn:mime-type = text/xml

Added: incubator/easyant/plugins/trunk/antunit/src/main/resources/antunit.ant
URL: http://svn.apache.org/viewvc/incubator/easyant/plugins/trunk/antunit/src/main/resources/antunit.ant?rev=1071697&view=auto
==============================================================================
--- incubator/easyant/plugins/trunk/antunit/src/main/resources/antunit.ant (added)
+++ incubator/easyant/plugins/trunk/antunit/src/main/resources/antunit.ant Thu Feb 17 17:01:07 2011
@@ -0,0 +1,173 @@
+<!--
+	Copyright 2008-2010 the EasyAnt project
+	
+	See the NOTICE file distributed with this work for additional information 
+	regarding copyright ownership.
+	
+	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.
+-->
+<project name="org.apache.easyant.plugins#antunit"
+	xmlns:ac="antlib:net.sf.antcontrib"
+	xmlns:ea="antlib:org.apache.easyant" 
+	xmlns:au="antlib:org.apache.ant.antunit">
+
+	<ea:core-version requiredrevision="[0.8,+]" />
+	
+	<dirname property="antunit.plugin.dir" file="${org.apache.easyant.plugins#antunit.junit-frames.xsl.file}"/>
+
+	<target name=":init" phase="validate" description="load parameters, antunit tasks, and create report directories">
+
+		<ea:parameter phase="validate" />
+		<ea:parameter phase="test" />
+		
+		<ea:parameter property="target.antunit.xml" default="${target}/antunit/xml" description="destination directory for xml test report" />
+		<ea:parameter property="target.antunit.html" default="${target}/antunit/html" description="destination directory for html test report" />
+		
+		<!-- Create the default antunit stylesheet dir -->
+		<property name="default.antunit.stylesheet.dir" value="${java.io.tmpdir}/antunit-stylesheet"/>
+		<echo message="Copying default stylesheet in default.antunit.stylesheet.dir"/>
+		<mkdir dir="${default.antunit.stylesheet.dir}" />
+		<copy tofile="${default.antunit.stylesheet.dir}/junit-frames.xsl" file="${org.apache.easyant.plugins#antunit.junit-frames.xsl.file}" verbose="false"/>
+		<copy tofile="${default.antunit.stylesheet.dir}/junit-noframes.xsl" file="${org.apache.easyant.plugins#antunit.junit-noframes.xsl.file}" verbose="false"/>
+		
+		<ea:parameter property="target.antunit.xsl.dir" default="${default.antunit.stylesheet.dir}" description="Location of directory containing XSL transforms for test reports"/>
+		
+		<ea:parameter property="src.test.antunit" default="src/test/antunit" description="directory where antunit test scripts are stored" />
+		<ea:parameter property="antunit.testcase" description="specify a list of testcase that you want to run, if no one is specified includes pattern will be used" />
+		<ea:parameter property="test.antunit.log.level" default="error" description="Verbosity level of messages from the antunit test:  none, info, warn, error, debug, verbose" />
+		<ea:parameter property="test.antunit.includes.pattern" description="Pattern describing files included in antunit test process" />
+		<ea:parameter property="test.antunit.excludes.pattern" default="" description="Pattern describing files excluded in antunit test process" />
+
+		<ea:parameter property="src.test.integration.antunit" default="src/integration-test/antunit"
+			description="directory where antunit integration tests are stored.  Integration tests are run after packaging, in the integration-test phase."/>
+		<ea:parameter property="test.integration.antunit.includes.pattern" description="Pattern describing files included in antunit integration test process"/>
+		<ea:parameter property="test.integration.antunit.excludes.pattern" default="" description="Pattern describing files excluded in antunit integration test process" />
+		
+		<ea:parameter property="test.run.failonerror" default="true"
+					description="specify if the build should be stopped when tests are failed. Typically this property should be set to false in continuous environmnent systems"/>
+				
+		
+		<condition property="test.antunit.includes.pattern" value="${antunit.testcase}" else="**/test.xml,**/*-test.xml">
+			<isset property="antunit.testcase" />
+		</condition>
+
+        <condition property="test.integration.antunit.includes.pattern" value="${antunit.testcase}" else="**/test.xml,**/*-test.xml">
+            <isset property="antunit.testcase" />
+        </condition>
+
+		<!--Load antunit tasks -->
+		<taskdef uri="antlib:org.apache.ant.antunit" resource="org/apache/ant/antunit/antlib.xml" classpathref="org.apache.easyant.plugins#antunit.classpath"/>
+		<taskdef name="junitreport" classname="org.apache.tools.ant.taskdefs.optional.junit.XMLResultAggregator"
+			classpathref="org.apache.easyant.plugins#antunit.classpath" onerror="ignore"/>
+
+		<mkdir dir="${target.antunit.xml}"/>
+		<mkdir dir="${target.antunit.html}"/>
+		
+		<available file="${src.test.antunit}" property="has.src.test.antunit" />
+		<available file="${src.test.integration.antunit}" property="has.src.test.integration.antunit"/>
+		
+		<condition property="skip.antunit.test">
+			<not><isset property="has.src.test.antunit"/></not>
+		</condition>
+		
+		<condition property="skip.antunit.integration">
+			<not><isset property="has.src.test.integration.antunit"/></not>
+		</condition>
+
+	</target>
+	
+	<macrodef name="antunit-test">
+		<attribute name="prefix"/>
+		<sequential>
+			<au:antunit failOnError="false" errorProperty="@{prefix}.failed">
+	            <propertySet>
+	                <propertyref name="ant.file.org.apache.easyant#easyant" />
+	                <propertyref regex="org\.apache\.easyant.*" />
+	                <propertyref name="org.apache.tools.ant.ProjectHelper"/>
+	            </propertySet>
+	            <referenceSet>
+	                <reference regex="^easyant\..*"/>
+	                <reference regex="^plugin\..*"/>
+	                <reference refid="ant.projectHelper"/>
+	                <reference refid="ant.executor"/>
+	            </referenceSet>
+				<fileset dir="${src.@{prefix}.antunit}" includes="${@{prefix}.antunit.includes.pattern}" excludes="${@{prefix}.antunit.excludes.pattern}" />
+				<au:plainlistener logLevel="${test.antunit.log.level}"/>
+				<au:xmllistener toDir="${target.antunit.xml}" logLevel="${test.antunit.log.level}"/>
+			</au:antunit>
+		</sequential>
+	</macrodef>
+
+	<target name="-test" depends="validate" unless="skip.antunit.test">
+		<antunit-test prefix="test"/>
+	</target>
+	
+	<target name="-integration-test" depends="validate" unless="skip.antunit.integration">
+		<antunit-test prefix="test.integration"/>
+	</target>
+	
+	<macrodef name="check-test-result" description="check test results">
+		<attribute name="propertytocheck"/>
+		<attribute name="message" />
+		<attribute name="echolevel" default="error"/>
+		<sequential>
+			<ac:if>
+				<istrue value="${test.run.failonerror}"/>
+				<ac:then>
+		        	<fail if="@{propertytocheck}" message="@{message}" />
+				</ac:then>
+				<ac:else>
+					<ac:if>
+						<isset property="@{propertytocheck}"/>
+						<ac:then>
+							<echo message="@{message}" level="@{echolevel}"/>
+						</ac:then>
+					</ac:if>
+				</ac:else>
+			</ac:if>
+		</sequential>		
+	</macrodef>
+
+	
+	<target name=":run" depends="-test" if="test.mode.run" unless="skip.antunit.test" 
+		phase="test" description="run all antunit tests">
+		<check-test-result propertytocheck="test.failed"
+			message="At least one test has failed. See logs in ${target.test.xml} for details or use the report target to run the test with a report" />
+
+	</target>
+	
+	<target name=":run-integration" depends="-integration-test" 
+		if="test.mode.run" unless="skip.antunit.integration" 
+		phase="integration-test" description="run antunit integration tests">
+		<check-test-result propertytocheck="test.integration.failed"
+			message="At least one integration test has failed. See logs in ${target.test.xml} for details or use the report target to run the test with a report" />
+	</target>
+
+	   <target name=":report" if="test.mode.report" unless="skip.antunit.test" depends="-test,-integration-test"
+	    	 phase="report" description="generate junit report">
+	        <junitreport todir="${target.test.xml}">
+	            <fileset dir="${target.test.xml}">
+	            	<include name="TEST-*.xml" />
+	            </fileset>
+	            <report format="frames" todir="${target.test.html}" />
+	        </junitreport>
+	        <fail if="test.failed"
+	              message="At least one test has failed. See logs in ${target.test.xml} or report in ${target.test.html}" />
+	        <fail if="test.integration.failed"
+	              message="At least one integration test has failed. See logs in ${target.test.xml} or report in ${target.test.html}" />
+	    </target>
+
+	
+	<target name="doit" depends=":run,:run-integration,:report" />
+	
+</project>

Propchange: incubator/easyant/plugins/trunk/antunit/src/main/resources/antunit.ant
------------------------------------------------------------------------------
    svn:eol-style = native

Propchange: incubator/easyant/plugins/trunk/antunit/src/main/resources/antunit.ant
------------------------------------------------------------------------------
    svn:keywords = Date Revision Author HeadURL Id

Propchange: incubator/easyant/plugins/trunk/antunit/src/main/resources/antunit.ant
------------------------------------------------------------------------------
    svn:mime-type = text/xml