diff --git a/proposal/myrmidon/src/test/org/apache/myrmidon/AbstractMyrmidonTest.java b/proposal/myrmidon/src/test/org/apache/myrmidon/AbstractMyrmidonTest.java
index 553f3b6b6..7820722de 100644
--- a/proposal/myrmidon/src/test/org/apache/myrmidon/AbstractMyrmidonTest.java
+++ b/proposal/myrmidon/src/test/org/apache/myrmidon/AbstractMyrmidonTest.java
@@ -45,12 +45,14 @@ public abstract class AbstractMyrmidonTest
}
/**
- * Locates a test resource.
+ * Locates a test resource, and asserts that the resource exists
*/
protected File getTestResource( final String name )
{
- final File file = new File( m_testBaseDir, name );
- return getCanonicalFile( file );
+ File file = new File( m_testBaseDir, name );
+ file = getCanonicalFile( file );
+ assertTrue( "Test file \"" + file + "\" does not exist.", file.exists() );
+ return file;
}
/**
diff --git a/proposal/myrmidon/src/test/org/apache/myrmidon/AbstractProjectTest.java b/proposal/myrmidon/src/test/org/apache/myrmidon/AbstractProjectTest.java
new file mode 100644
index 000000000..94c488888
--- /dev/null
+++ b/proposal/myrmidon/src/test/org/apache/myrmidon/AbstractProjectTest.java
@@ -0,0 +1,80 @@
+/*
+ * Copyright (C) The Apache Software Foundation. All rights reserved.
+ *
+ * This software is published under the terms of the Apache Software License
+ * version 1.1, a copy of which has been included with this distribution in
+ * the LICENSE.txt file.
+ */
+package org.apache.myrmidon;
+
+import java.io.File;
+import org.apache.myrmidon.components.embeddor.DefaultEmbeddor;
+import org.apache.myrmidon.interfaces.embeddor.Embeddor;
+import org.apache.myrmidon.interfaces.model.Project;
+import org.apache.myrmidon.interfaces.workspace.Workspace;
+import org.apache.avalon.framework.logger.Logger;
+import org.apache.avalon.framework.parameters.Parameters;
+
+/**
+ * A base class for test cases which need to execute projects.
+ *
+ * @author Adam Murdoch
+ * @version $Revision$ $Date$
+ */
+public class AbstractProjectTest
+ extends AbstractMyrmidonTest
+{
+ private DefaultEmbeddor m_embeddor;
+
+ public AbstractProjectTest( final String name )
+ {
+ super( name );
+ }
+
+ /**
+ * Tear-down the test.
+ */
+ protected void tearDown() throws Exception
+ {
+ if( m_embeddor != null )
+ {
+ m_embeddor.dispose();
+ m_embeddor = null;
+ }
+ }
+
+ /**
+ * Returns an embeddor which can be used to build and execute projects.
+ */
+ protected Embeddor getEmbeddor() throws Exception
+ {
+ if( m_embeddor == null )
+ {
+ final Logger logger = createLogger();
+ m_embeddor = new DefaultEmbeddor();
+ m_embeddor.enableLogging( logger );
+
+ final Parameters params = new Parameters();
+ final File instDir = getHomeDirectory();
+ params.setParameter( "myrmidon.home", instDir.getAbsolutePath() );
+ m_embeddor.parameterize( params );
+ m_embeddor.initialize();
+ m_embeddor.start();
+ }
+
+ return m_embeddor;
+ }
+
+ /**
+ * Executes a target in a project, and asserts that it does not fail
+ */
+ protected void executeTarget( final File projectFile, final String targetName )
+ throws Exception
+ {
+ final Embeddor embeddor = getEmbeddor();
+ final Project project = embeddor.createProject( projectFile.getAbsolutePath(), null, null );
+ final Workspace workspace = embeddor.createWorkspace( new Parameters() );
+
+ workspace.executeProject( project, targetName );
+ }
+}
diff --git a/proposal/myrmidon/src/test/org/apache/myrmidon/components/deployer/DefaultDeployerTest.java b/proposal/myrmidon/src/test/org/apache/myrmidon/components/deployer/DefaultDeployerTest.java
index 81d17279a..44372f971 100644
--- a/proposal/myrmidon/src/test/org/apache/myrmidon/components/deployer/DefaultDeployerTest.java
+++ b/proposal/myrmidon/src/test/org/apache/myrmidon/components/deployer/DefaultDeployerTest.java
@@ -119,8 +119,6 @@ public class DefaultDeployerTest
public void testLibDescriptor() throws Exception
{
final File typelib = getTestResource( "test.atl" );
- assertTrue( "File " + typelib + " does not exist", typelib.exists() );
-
final TypeDeployer typeDeployer = m_deployer.createDeployer( typelib );
// Make sure the test types have not been deployed
diff --git a/proposal/myrmidon/src/test/org/apache/myrmidon/components/embeddor/DefaultEmbeddorTest.java b/proposal/myrmidon/src/test/org/apache/myrmidon/components/embeddor/DefaultEmbeddorTest.java
index 58ca0b134..2e6ae55c0 100644
--- a/proposal/myrmidon/src/test/org/apache/myrmidon/components/embeddor/DefaultEmbeddorTest.java
+++ b/proposal/myrmidon/src/test/org/apache/myrmidon/components/embeddor/DefaultEmbeddorTest.java
@@ -12,9 +12,11 @@ import org.apache.avalon.framework.logger.Logger;
import org.apache.avalon.framework.parameters.Parameters;
import org.apache.myrmidon.AbstractMyrmidonTest;
import org.apache.myrmidon.TrackingProjectListener;
+import org.apache.myrmidon.AbstractProjectTest;
import org.apache.myrmidon.interfaces.model.Project;
import org.apache.myrmidon.interfaces.model.Target;
import org.apache.myrmidon.interfaces.workspace.Workspace;
+import org.apache.myrmidon.interfaces.embeddor.Embeddor;
import org.apache.myrmidon.listeners.ProjectListener;
/**
@@ -24,51 +26,21 @@ import org.apache.myrmidon.listeners.ProjectListener;
* @version $Revision$ $Date$
*/
public class DefaultEmbeddorTest
- extends AbstractMyrmidonTest
+ extends AbstractProjectTest
{
- private DefaultEmbeddor m_embeddor;
-
public DefaultEmbeddorTest( String name )
{
super( name );
}
- /**
- * Setup the test, by creating and initialising the embeddor.
- */
- protected void setUp() throws Exception
- {
- final Logger logger = createLogger();
- m_embeddor = new DefaultEmbeddor();
- m_embeddor.enableLogging( logger );
-
- final Parameters params = new Parameters();
- final File instDir = getHomeDirectory();
- params.setParameter( "myrmidon.home", instDir.getAbsolutePath() );
- m_embeddor.parameterize( params );
- m_embeddor.initialize();
- m_embeddor.start();
- }
-
- /**
- * Tear-down the test.
- */
- protected void tearDown() throws Exception
- {
- m_embeddor.dispose();
- m_embeddor = null;
- }
-
/**
* Tests that a project is successfully built from a file.
*/
public void testProjectBuilder() throws Exception
{
- final File projectFile = getTestResource( "project-builder.ant" );
- assertTrue( "Project file \"" + projectFile + "\" does not exist.", projectFile.exists() );
-
// Build the project
- final Project project = m_embeddor.createProject( projectFile.getAbsolutePath(), null, null );
+ final File projectFile = getTestResource( "project-builder.ant" );
+ final Project project = getEmbeddor().createProject( projectFile.getAbsolutePath(), null, null );
// Verify the project.
assertEquals( "test-project", project.getProjectName() );
@@ -92,7 +64,7 @@ public class DefaultEmbeddorTest
*/
public void testCreateListener() throws Exception
{
- final ProjectListener listener = m_embeddor.createListener( "default" );
+ final ProjectListener listener = getEmbeddor().createListener( "default" );
}
/**
@@ -102,10 +74,11 @@ public class DefaultEmbeddorTest
{
// Build the project
final File projectFile = getTestResource( "project-builder.ant" );
- final Project project = m_embeddor.createProject( projectFile.getAbsolutePath(), null, null );
+ final Embeddor embeddor = getEmbeddor();
+ final Project project = embeddor.createProject( projectFile.getAbsolutePath(), null, null );
// Build the workspace
- final Workspace workspace = m_embeddor.createWorkspace( new Parameters() );
+ final Workspace workspace = embeddor.createWorkspace( new Parameters() );
// Install a listener
final TrackingProjectListener listener = new TrackingProjectListener();
diff --git a/proposal/myrmidon/src/test/org/apache/myrmidon/interfaces/type/TypeFactoryTest.java b/proposal/myrmidon/src/test/org/apache/myrmidon/interfaces/type/TypeFactoryTest.java
index 28d583555..facea850f 100644
--- a/proposal/myrmidon/src/test/org/apache/myrmidon/interfaces/type/TypeFactoryTest.java
+++ b/proposal/myrmidon/src/test/org/apache/myrmidon/interfaces/type/TypeFactoryTest.java
@@ -63,7 +63,6 @@ public class TypeFactoryTest
throws Exception
{
final File file = getTestResource( "types.jar" );
- assertTrue( "Support Jar " + file + " exists", file.exists() );
final URL[] classpath = new URL[]{file.toURL()};
final ReloadingTypeFactory factory = new ReloadingTypeFactory( classpath, null );
diff --git a/proposal/myrmidon/src/testcases/org/apache/myrmidon/AbstractMyrmidonTest.java b/proposal/myrmidon/src/testcases/org/apache/myrmidon/AbstractMyrmidonTest.java
index 553f3b6b6..7820722de 100644
--- a/proposal/myrmidon/src/testcases/org/apache/myrmidon/AbstractMyrmidonTest.java
+++ b/proposal/myrmidon/src/testcases/org/apache/myrmidon/AbstractMyrmidonTest.java
@@ -45,12 +45,14 @@ public abstract class AbstractMyrmidonTest
}
/**
- * Locates a test resource.
+ * Locates a test resource, and asserts that the resource exists
*/
protected File getTestResource( final String name )
{
- final File file = new File( m_testBaseDir, name );
- return getCanonicalFile( file );
+ File file = new File( m_testBaseDir, name );
+ file = getCanonicalFile( file );
+ assertTrue( "Test file \"" + file + "\" does not exist.", file.exists() );
+ return file;
}
/**
diff --git a/proposal/myrmidon/src/testcases/org/apache/myrmidon/AbstractProjectTest.java b/proposal/myrmidon/src/testcases/org/apache/myrmidon/AbstractProjectTest.java
new file mode 100644
index 000000000..94c488888
--- /dev/null
+++ b/proposal/myrmidon/src/testcases/org/apache/myrmidon/AbstractProjectTest.java
@@ -0,0 +1,80 @@
+/*
+ * Copyright (C) The Apache Software Foundation. All rights reserved.
+ *
+ * This software is published under the terms of the Apache Software License
+ * version 1.1, a copy of which has been included with this distribution in
+ * the LICENSE.txt file.
+ */
+package org.apache.myrmidon;
+
+import java.io.File;
+import org.apache.myrmidon.components.embeddor.DefaultEmbeddor;
+import org.apache.myrmidon.interfaces.embeddor.Embeddor;
+import org.apache.myrmidon.interfaces.model.Project;
+import org.apache.myrmidon.interfaces.workspace.Workspace;
+import org.apache.avalon.framework.logger.Logger;
+import org.apache.avalon.framework.parameters.Parameters;
+
+/**
+ * A base class for test cases which need to execute projects.
+ *
+ * @author Adam Murdoch
+ * @version $Revision$ $Date$
+ */
+public class AbstractProjectTest
+ extends AbstractMyrmidonTest
+{
+ private DefaultEmbeddor m_embeddor;
+
+ public AbstractProjectTest( final String name )
+ {
+ super( name );
+ }
+
+ /**
+ * Tear-down the test.
+ */
+ protected void tearDown() throws Exception
+ {
+ if( m_embeddor != null )
+ {
+ m_embeddor.dispose();
+ m_embeddor = null;
+ }
+ }
+
+ /**
+ * Returns an embeddor which can be used to build and execute projects.
+ */
+ protected Embeddor getEmbeddor() throws Exception
+ {
+ if( m_embeddor == null )
+ {
+ final Logger logger = createLogger();
+ m_embeddor = new DefaultEmbeddor();
+ m_embeddor.enableLogging( logger );
+
+ final Parameters params = new Parameters();
+ final File instDir = getHomeDirectory();
+ params.setParameter( "myrmidon.home", instDir.getAbsolutePath() );
+ m_embeddor.parameterize( params );
+ m_embeddor.initialize();
+ m_embeddor.start();
+ }
+
+ return m_embeddor;
+ }
+
+ /**
+ * Executes a target in a project, and asserts that it does not fail
+ */
+ protected void executeTarget( final File projectFile, final String targetName )
+ throws Exception
+ {
+ final Embeddor embeddor = getEmbeddor();
+ final Project project = embeddor.createProject( projectFile.getAbsolutePath(), null, null );
+ final Workspace workspace = embeddor.createWorkspace( new Parameters() );
+
+ workspace.executeProject( project, targetName );
+ }
+}
diff --git a/proposal/myrmidon/src/testcases/org/apache/myrmidon/components/deployer/DefaultDeployerTest.java b/proposal/myrmidon/src/testcases/org/apache/myrmidon/components/deployer/DefaultDeployerTest.java
index 81d17279a..44372f971 100644
--- a/proposal/myrmidon/src/testcases/org/apache/myrmidon/components/deployer/DefaultDeployerTest.java
+++ b/proposal/myrmidon/src/testcases/org/apache/myrmidon/components/deployer/DefaultDeployerTest.java
@@ -119,8 +119,6 @@ public class DefaultDeployerTest
public void testLibDescriptor() throws Exception
{
final File typelib = getTestResource( "test.atl" );
- assertTrue( "File " + typelib + " does not exist", typelib.exists() );
-
final TypeDeployer typeDeployer = m_deployer.createDeployer( typelib );
// Make sure the test types have not been deployed
diff --git a/proposal/myrmidon/src/testcases/org/apache/myrmidon/components/embeddor/DefaultEmbeddorTest.java b/proposal/myrmidon/src/testcases/org/apache/myrmidon/components/embeddor/DefaultEmbeddorTest.java
index 58ca0b134..2e6ae55c0 100644
--- a/proposal/myrmidon/src/testcases/org/apache/myrmidon/components/embeddor/DefaultEmbeddorTest.java
+++ b/proposal/myrmidon/src/testcases/org/apache/myrmidon/components/embeddor/DefaultEmbeddorTest.java
@@ -12,9 +12,11 @@ import org.apache.avalon.framework.logger.Logger;
import org.apache.avalon.framework.parameters.Parameters;
import org.apache.myrmidon.AbstractMyrmidonTest;
import org.apache.myrmidon.TrackingProjectListener;
+import org.apache.myrmidon.AbstractProjectTest;
import org.apache.myrmidon.interfaces.model.Project;
import org.apache.myrmidon.interfaces.model.Target;
import org.apache.myrmidon.interfaces.workspace.Workspace;
+import org.apache.myrmidon.interfaces.embeddor.Embeddor;
import org.apache.myrmidon.listeners.ProjectListener;
/**
@@ -24,51 +26,21 @@ import org.apache.myrmidon.listeners.ProjectListener;
* @version $Revision$ $Date$
*/
public class DefaultEmbeddorTest
- extends AbstractMyrmidonTest
+ extends AbstractProjectTest
{
- private DefaultEmbeddor m_embeddor;
-
public DefaultEmbeddorTest( String name )
{
super( name );
}
- /**
- * Setup the test, by creating and initialising the embeddor.
- */
- protected void setUp() throws Exception
- {
- final Logger logger = createLogger();
- m_embeddor = new DefaultEmbeddor();
- m_embeddor.enableLogging( logger );
-
- final Parameters params = new Parameters();
- final File instDir = getHomeDirectory();
- params.setParameter( "myrmidon.home", instDir.getAbsolutePath() );
- m_embeddor.parameterize( params );
- m_embeddor.initialize();
- m_embeddor.start();
- }
-
- /**
- * Tear-down the test.
- */
- protected void tearDown() throws Exception
- {
- m_embeddor.dispose();
- m_embeddor = null;
- }
-
/**
* Tests that a project is successfully built from a file.
*/
public void testProjectBuilder() throws Exception
{
- final File projectFile = getTestResource( "project-builder.ant" );
- assertTrue( "Project file \"" + projectFile + "\" does not exist.", projectFile.exists() );
-
// Build the project
- final Project project = m_embeddor.createProject( projectFile.getAbsolutePath(), null, null );
+ final File projectFile = getTestResource( "project-builder.ant" );
+ final Project project = getEmbeddor().createProject( projectFile.getAbsolutePath(), null, null );
// Verify the project.
assertEquals( "test-project", project.getProjectName() );
@@ -92,7 +64,7 @@ public class DefaultEmbeddorTest
*/
public void testCreateListener() throws Exception
{
- final ProjectListener listener = m_embeddor.createListener( "default" );
+ final ProjectListener listener = getEmbeddor().createListener( "default" );
}
/**
@@ -102,10 +74,11 @@ public class DefaultEmbeddorTest
{
// Build the project
final File projectFile = getTestResource( "project-builder.ant" );
- final Project project = m_embeddor.createProject( projectFile.getAbsolutePath(), null, null );
+ final Embeddor embeddor = getEmbeddor();
+ final Project project = embeddor.createProject( projectFile.getAbsolutePath(), null, null );
// Build the workspace
- final Workspace workspace = m_embeddor.createWorkspace( new Parameters() );
+ final Workspace workspace = embeddor.createWorkspace( new Parameters() );
// Install a listener
final TrackingProjectListener listener = new TrackingProjectListener();
diff --git a/proposal/myrmidon/src/testcases/org/apache/myrmidon/interfaces/type/TypeFactoryTest.java b/proposal/myrmidon/src/testcases/org/apache/myrmidon/interfaces/type/TypeFactoryTest.java
index 28d583555..facea850f 100644
--- a/proposal/myrmidon/src/testcases/org/apache/myrmidon/interfaces/type/TypeFactoryTest.java
+++ b/proposal/myrmidon/src/testcases/org/apache/myrmidon/interfaces/type/TypeFactoryTest.java
@@ -63,7 +63,6 @@ public class TypeFactoryTest
throws Exception
{
final File file = getTestResource( "types.jar" );
- assertTrue( "Support Jar " + file + " exists", file.exists() );
final URL[] classpath = new URL[]{file.toURL()};
final ReloadingTypeFactory factory = new ReloadingTypeFactory( classpath, null );