incubator-easyant-commits mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From hi...@apache.org
Subject svn commit: r1073371 [28/28] - in /incubator/easyant/core/trunk: ./ bin/ example/build-configurations/ example/build-configurations/src/main/java/org/apache/easyant/example/ example/build-configurations/src/test/java/org/apache/easyant/example/ example...
Date Tue, 22 Feb 2011 15:56:09 GMT
Modified: 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=1073371&r1=1073370&r2=1073371&view=diff
==============================================================================
--- incubator/easyant/core/trunk/src/test/java/org/apache/easyant/core/EasyAntBaseTest.java (original)
+++ incubator/easyant/core/trunk/src/test/java/org/apache/easyant/core/EasyAntBaseTest.java Tue Feb 22 15:55:55 2011
@@ -42,661 +42,662 @@ import org.apache.tools.ant.types.LogLev
  */
 public abstract class EasyAntBaseTest extends TestCase {
 
-	protected Project project;
-	protected EasyAntConfiguration conf;
+    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());
-		}
-	}
+    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 &lt;=
+     * 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 == '
+') {
+                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());
+        }
+    }
 
 }

Modified: 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=1073371&r1=1073370&r2=1073371&view=diff
==============================================================================
--- incubator/easyant/core/trunk/src/test/java/org/apache/easyant/core/ModuleInheritanceTest.java (original)
+++ incubator/easyant/core/trunk/src/test/java/org/apache/easyant/core/ModuleInheritanceTest.java Tue Feb 22 15:55:55 2011
@@ -20,30 +20,30 @@ 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"));
+    
+    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");
-	}
+        //init project with easyant configuration
+        initProject();
+    }
+    
+    public void clean() throws Exception {
+        executeTarget("clean:clean");
+    }
     
     public void testInheritablePluginWithScopeChild() throws Exception {
-    	clean();
-    	executeTarget("source-jar:init");
+        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");
+        clean();
+        expectBuildException("eadoc:init", "Target \"eadoc:init\" does not exist in the project \"myapp-core\"");
+        expectPropertyUnset("validate", "my.property");
     }
     
     

Modified: 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=1073371&r1=1073370&r2=1073371&view=diff
==============================================================================
--- incubator/easyant/core/trunk/src/test/java/org/apache/easyant/core/PropertiesAsAttributesTest.java (original)
+++ incubator/easyant/core/trunk/src/test/java/org/apache/easyant/core/PropertiesAsAttributesTest.java Tue Feb 22 15:55:55 2011
@@ -22,57 +22,57 @@ 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"));
+    
+    @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");
-	}
+        //init project with easyant configuration
+        initProject();
+    }
+    
+    @Test
+    public void testClean() throws Exception {
+        executeTarget("clean:clean");
+    }
     
-	@Test
+    @Test
     public void testPropertiesInBuildType() throws Exception {
-    	expectPropertySet("validate", "my.property.inbuildtype","true");
+        expectPropertySet("validate", "my.property.inbuildtype","true");
 
-    	//properties loaded by build configuration 
-    	expectPropertyUnset("validate", "my.property.inconf");
+        //properties loaded by build configuration 
+        expectPropertyUnset("validate", "my.property.inconf");
     }
-	
-	@Test
+    
+    @Test
     public void testPropertiesInPlugin() throws Exception {
-    	expectPropertySet("validate", "my.property.inplugin","true");
+        expectPropertySet("validate", "my.property.inplugin","true");
     
-    	//properties loaded by build configuration 
-    	expectPropertyUnset("validate", "my.property.inconf");
+        //properties loaded by build configuration 
+        expectPropertyUnset("validate", "my.property.inconf");
     }
-	
-	@Test
+    
+    @Test
     public void testPropertiesInBuildConfiguration() throws Exception {
-		conf.getActiveBuildConfigurations().add("myBuild");
+        conf.getActiveBuildConfigurations().add("myBuild");
 
-		//re-init project with easyant configuration including build types
-		initProject();
+        //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");
+        expectPropertySet("validate", "my.property.inplugin","true");
+        
+        //properties loaded by build configuration 
+        expectPropertySet("validate", "my.property.inconf","true");
     }
     
-	@Test
+    @Test
     public void testVerify() throws Exception {
-    	testClean();
-    	executeTarget("verify");
+        testClean();
+        executeTarget("verify");
     }
     
 }

Modified: 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=1073371&r1=1073370&r2=1073371&view=diff
==============================================================================
--- incubator/easyant/core/trunk/src/test/java/org/apache/easyant/core/StandardJavaProjectTest.java (original)
+++ incubator/easyant/core/trunk/src/test/java/org/apache/easyant/core/StandardJavaProjectTest.java Tue Feb 22 15:55:55 2011
@@ -20,47 +20,47 @@ 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"));
+    
+    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");
-	}
+        //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");
+        expectPropertySet("validate", "default.build.number", "10");
     }
     
     public void testPackage() throws Exception {
-    	testClean();
-    	executeTarget("package");
+        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");
+        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");
+        testClean();
+        //<ea:plugin module="javadoc" revision="0.1" as="foobar"/>
+        executeTarget("foobar:javadoc");
     }
 
     
     public void testVerify() throws Exception {
-    	testClean();
-    	executeTarget("verify");
+        testClean();
+        executeTarget("verify");
     }
     
 }

Modified: 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=1073371&r1=1073370&r2=1073371&view=diff
==============================================================================
--- incubator/easyant/core/trunk/src/test/java/org/apache/easyant/core/services/PluginServiceTest.java (original)
+++ incubator/easyant/core/trunk/src/test/java/org/apache/easyant/core/services/PluginServiceTest.java Tue Feb 22 15:55:55 2011
@@ -43,124 +43,124 @@ import org.junit.Test;
 
 public class PluginServiceTest {
 
-	private static PluginService pluginService;
+    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;
-			}
-		}
+    @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);
+        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()) {
+        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);
-	}
+    @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);
+    }
 }

Modified: 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=1073371&r1=1073370&r2=1073371&view=diff
==============================================================================
--- incubator/easyant/core/trunk/src/test/resources/org/apache/easyant/core/multimodule/module.ivy (original)
+++ incubator/easyant/core/trunk/src/test/resources/org/apache/easyant/core/multimodule/module.ivy Tue Feb 22 15:55:55 2011
@@ -15,7 +15,7 @@
    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>
+    <info organisation="org.apache.easyant" module="myapp-orchestrator" revision="0.2" status="integration" >
+        <ea:build module="meta-build" revision="0.2"/>
+    </info>
 </ivy-module>

Modified: 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=1073371&r1=1073370&r2=1073371&view=diff
==============================================================================
--- incubator/easyant/core/trunk/src/test/resources/org/apache/easyant/core/multimodule/myapp-core/module.ivy (original)
+++ incubator/easyant/core/trunk/src/test/resources/org/apache/easyant/core/multimodule/myapp-core/module.ivy Tue Feb 22 15:55:55 2011
@@ -15,8 +15,8 @@
    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>
+    <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>

Modified: 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=1073371&r1=1073370&r2=1073371&view=diff
==============================================================================
--- incubator/easyant/core/trunk/src/test/resources/org/apache/easyant/core/multimodule/myapp-hello-world/module.ivy (original)
+++ incubator/easyant/core/trunk/src/test/resources/org/apache/easyant/core/multimodule/myapp-hello-world/module.ivy Tue Feb 22 15:55:55 2011
@@ -15,17 +15,17 @@
    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 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>
+    </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>

Modified: 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=1073371&r1=1073370&r2=1073371&view=diff
==============================================================================
--- incubator/easyant/core/trunk/src/test/resources/org/apache/easyant/core/multimodule/parent.ivy (original)
+++ incubator/easyant/core/trunk/src/test/resources/org/apache/easyant/core/multimodule/parent.ivy Tue Feb 22 15:55:55 2011
@@ -15,13 +15,13 @@
    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>
+    <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>

Modified: 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=1073371&r1=1073370&r2=1073371&view=diff
==============================================================================
--- incubator/easyant/core/trunk/src/test/resources/org/apache/easyant/core/propertiesAsAttributes.ivy (original)
+++ incubator/easyant/core/trunk/src/test/resources/org/apache/easyant/core/propertiesAsAttributes.ivy Tue Feb 22 15:55:55 2011
@@ -15,15 +15,15 @@
    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>
+    <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>

Modified: 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=1073371&r1=1073370&r2=1073371&view=diff
==============================================================================
--- incubator/easyant/core/trunk/src/test/resources/org/apache/easyant/core/standardJavaProject.ivy (original)
+++ incubator/easyant/core/trunk/src/test/resources/org/apache/easyant/core/standardJavaProject.ivy Tue Feb 22 15:55:55 2011
@@ -15,15 +15,15 @@
    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>
+    <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>



Mime
View raw message