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 <= 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 <=
+ * 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 >=
+ * 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