Class AbstractMojoTestCase

java.lang.Object
junit.framework.Assert
junit.framework.TestCase
org.codehaus.plexus.PlexusTestCase
org.apache.maven.plugin.testing.AbstractMojoTestCase
All Implemented Interfaces:
junit.framework.Test

public abstract class AbstractMojoTestCase extends org.codehaus.plexus.PlexusTestCase
TODO: add a way to use the plugin POM for the lookup so that the user doesn't have to provide the a:g:v:goal as the role hint for the mojo lookup. TODO: standardize the execution of the mojo and looking at the results, but could simply have a template method for verifying the state of the mojo post execution TODO: need a way to look at the state of the mojo without adding getters, this could be where we finally specify the expressions which extract values from the mojo. TODO: create a standard directory structure for picking up POMs to make this even easier, we really just need a testing descriptor and make this entirely declarative!
Version:
$Id$
  • Field Summary

    Fields
    Modifier and Type
    Field
    Description
    private org.codehaus.plexus.component.configurator.ComponentConfigurator
     
    private org.codehaus.plexus.PlexusContainer
     
    private static final org.apache.maven.artifact.versioning.DefaultArtifactVersion
     
    private Map<String,org.apache.maven.plugin.descriptor.MojoDescriptor>
     
  • Constructor Summary

    Constructors
    Constructor
    Description
     
  • Method Summary

    Modifier and Type
    Method
    Description
    protected void
    addGuiceModules(List<com.google.inject.Module> modules)
     
    protected org.apache.maven.plugin.Mojo
    configureMojo(org.apache.maven.plugin.Mojo mojo, String artifactId, File pom)
    Configure the mojo
    protected org.apache.maven.plugin.Mojo
    configureMojo(org.apache.maven.plugin.Mojo mojo, org.codehaus.plexus.configuration.PlexusConfiguration pluginConfiguration)
    Configure the mojo with the given plexus configuration
    protected org.codehaus.plexus.configuration.PlexusConfiguration
     
    protected org.codehaus.plexus.configuration.PlexusConfiguration
    extractPluginConfiguration(String artifactId, org.codehaus.plexus.util.xml.Xpp3Dom pomDom)
     
    private void
    finalizeMojoConfiguration(org.apache.maven.plugin.MojoExecution mojoExecution)
     
    protected org.codehaus.plexus.PlexusContainer
     
    private File
    Returns best-effort plugin artifact file.
    protected String
     
    protected String
     
    protected InputStream
     
    protected Map<String,Object>
    Convenience method to obtain all variables and values from the mojo (including its superclasses) Note: the values in the map are of type Object so the caller is responsible for casting to desired types.
    protected Map<String,Object>
    Convenience method to obtain all variables and values from the mojo (including its superclasses) Note: the values in the map are of type Object so the caller is responsible for casting to desired types.
    protected Object
    Convenience method to obtain the value of a variable on a mojo that might not have a getter.
    protected org.apache.maven.plugin.Mojo
    lookupConfiguredMojo(org.apache.maven.execution.MavenSession session, org.apache.maven.plugin.MojoExecution execution)
     
    protected org.apache.maven.plugin.Mojo
    lookupConfiguredMojo(org.apache.maven.project.MavenProject project, String goal)
     
    protected org.apache.maven.plugin.Mojo
    Lookup the mojo leveraging the actual subprojects pom
    protected org.apache.maven.plugin.Mojo
    lookupEmptyMojo(String goal, String pluginPom)
    Lookup an empty mojo
    protected org.apache.maven.plugin.Mojo
    lookupMojo(String goal, File pom)
    Lookup the mojo leveraging the actual subprojects pom
    protected org.apache.maven.plugin.Mojo
    lookupMojo(String goal, String pluginPom)
    Lookup the mojo leveraging the subproject pom
    protected org.apache.maven.plugin.Mojo
    lookupMojo(String groupId, String artifactId, String version, String goal, org.codehaus.plexus.configuration.PlexusConfiguration pluginConfiguration)
    lookup the mojo while we have all of the relavent information
    protected org.apache.maven.execution.MavenSession
    newMavenSession(org.apache.maven.project.MavenProject project)
     
    protected org.apache.maven.plugin.MojoExecution
     
    private String
    resolveFromRootThenParent(org.codehaus.plexus.util.xml.Xpp3Dom pluginPomDom, String element)
    sometimes the parent element might contain the correct value so generalize that access TODO find out where this is probably done elsewhere
    protected void
     
    protected void
     
    protected org.codehaus.plexus.ContainerConfiguration
     
    protected void
    setVariableValueToObject(Object object, String variable, Object value)
    Convenience method to set values to variables in objects that don't have setters
    private void
    We should make sure this is called in each method that makes use of the container, otherwise we throw ugly NPE's crops up when the subclassing code defines the setUp method but doesn't call super.setUp()

    Methods inherited from class org.codehaus.plexus.PlexusTestCase

    customizeContainerConfiguration, customizeContext, getBasedir, getClassLoader, getConfigurationName, getCustomConfigurationName, getResourceAsStream, getTestConfiguration, getTestConfiguration, getTestFile, getTestFile, getTestPath, getTestPath, lookup, lookup, lookup, lookup, release, tearDown, teardownContainer

    Methods inherited from class junit.framework.TestCase

    assertEquals, assertEquals, assertEquals, assertEquals, assertEquals, assertEquals, assertEquals, assertEquals, assertEquals, assertEquals, assertEquals, assertEquals, assertEquals, assertEquals, assertEquals, assertEquals, assertEquals, assertEquals, assertEquals, assertEquals, assertFalse, assertFalse, assertNotNull, assertNotNull, assertNotSame, assertNotSame, assertNull, assertNull, assertSame, assertSame, assertTrue, assertTrue, countTestCases, createResult, fail, fail, failNotEquals, failNotSame, failSame, format, getName, run, run, runBare, runTest, setName, toString

    Methods inherited from class java.lang.Object

    clone, equals, finalize, getClass, hashCode, notify, notifyAll, wait, wait, wait
  • Field Details

    • MAVEN_VERSION

      private static final org.apache.maven.artifact.versioning.DefaultArtifactVersion MAVEN_VERSION
    • configurator

      private org.codehaus.plexus.component.configurator.ComponentConfigurator configurator
    • container

      private org.codehaus.plexus.PlexusContainer container
    • mojoDescriptors

      private Map<String,org.apache.maven.plugin.descriptor.MojoDescriptor> mojoDescriptors
  • Constructor Details

    • AbstractMojoTestCase

      public AbstractMojoTestCase()
  • Method Details

    • setUp

      protected void setUp() throws Exception
      Overrides:
      setUp in class org.codehaus.plexus.PlexusTestCase
      Throws:
      Exception
    • getPluginArtifactFile

      private File getPluginArtifactFile() throws IOException
      Returns best-effort plugin artifact file.

      First, attempts to determine parent directory of META-INF directory holding the plugin descriptor. If META-INF parent directory cannot be determined, falls back to test basedir.

      Throws:
      IOException
    • getPublicDescriptorStream

      protected InputStream getPublicDescriptorStream() throws Exception
      Throws:
      Exception
    • getPluginDescriptorPath

      protected String getPluginDescriptorPath()
    • getPluginDescriptorLocation

      protected String getPluginDescriptorLocation()
    • setupContainer

      protected void setupContainer()
      Overrides:
      setupContainer in class org.codehaus.plexus.PlexusTestCase
    • addGuiceModules

      protected void addGuiceModules(List<com.google.inject.Module> modules)
      Since:
      3.0.0
    • setupContainerConfiguration

      protected org.codehaus.plexus.ContainerConfiguration setupContainerConfiguration()
    • getContainer

      protected org.codehaus.plexus.PlexusContainer getContainer()
      Overrides:
      getContainer in class org.codehaus.plexus.PlexusTestCase
    • lookupMojo

      protected org.apache.maven.plugin.Mojo lookupMojo(String goal, String pluginPom) throws Exception
      Lookup the mojo leveraging the subproject pom
      Parameters:
      goal -
      pluginPom -
      Returns:
      a Mojo instance
      Throws:
      Exception
    • lookupEmptyMojo

      protected org.apache.maven.plugin.Mojo lookupEmptyMojo(String goal, String pluginPom) throws Exception
      Lookup an empty mojo
      Parameters:
      goal -
      pluginPom -
      Returns:
      a Mojo instance
      Throws:
      Exception
    • lookupMojo

      protected org.apache.maven.plugin.Mojo lookupMojo(String goal, File pom) throws Exception
      Lookup the mojo leveraging the actual subprojects pom
      Parameters:
      goal -
      pom -
      Returns:
      a Mojo instance
      Throws:
      Exception
    • lookupEmptyMojo

      protected org.apache.maven.plugin.Mojo lookupEmptyMojo(String goal, File pom) throws Exception
      Lookup the mojo leveraging the actual subprojects pom
      Parameters:
      goal -
      pom -
      Returns:
      a Mojo instance
      Throws:
      Exception
    • lookupMojo

      protected org.apache.maven.plugin.Mojo lookupMojo(String groupId, String artifactId, String version, String goal, org.codehaus.plexus.configuration.PlexusConfiguration pluginConfiguration) throws Exception
      lookup the mojo while we have all of the relavent information
      Parameters:
      groupId -
      artifactId -
      version -
      goal -
      pluginConfiguration -
      Returns:
      a Mojo instance
      Throws:
      Exception
    • lookupConfiguredMojo

      protected org.apache.maven.plugin.Mojo lookupConfiguredMojo(org.apache.maven.project.MavenProject project, String goal) throws Exception
      Parameters:
      project -
      goal -
      Returns:
      Throws:
      Exception
      Since:
      2.0
    • lookupConfiguredMojo

      protected org.apache.maven.plugin.Mojo lookupConfiguredMojo(org.apache.maven.execution.MavenSession session, org.apache.maven.plugin.MojoExecution execution) throws Exception, org.codehaus.plexus.component.configurator.ComponentConfigurationException
      Parameters:
      session -
      execution -
      Returns:
      Throws:
      Exception
      org.codehaus.plexus.component.configurator.ComponentConfigurationException
      Since:
      2.0
    • newMavenSession

      protected org.apache.maven.execution.MavenSession newMavenSession(org.apache.maven.project.MavenProject project)
      Parameters:
      project -
      Returns:
      Since:
      2.0
    • newMojoExecution

      protected org.apache.maven.plugin.MojoExecution newMojoExecution(String goal)
      Parameters:
      goal -
      Returns:
      Since:
      2.0
    • finalizeMojoConfiguration

      private void finalizeMojoConfiguration(org.apache.maven.plugin.MojoExecution mojoExecution)
    • extractPluginConfiguration

      protected org.codehaus.plexus.configuration.PlexusConfiguration extractPluginConfiguration(String artifactId, File pom) throws Exception
      Parameters:
      artifactId -
      pom -
      Returns:
      the plexus configuration
      Throws:
      Exception
    • extractPluginConfiguration

      protected org.codehaus.plexus.configuration.PlexusConfiguration extractPluginConfiguration(String artifactId, org.codehaus.plexus.util.xml.Xpp3Dom pomDom) throws Exception
      Parameters:
      artifactId -
      pomDom -
      Returns:
      the plexus configuration
      Throws:
      Exception
    • configureMojo

      protected org.apache.maven.plugin.Mojo configureMojo(org.apache.maven.plugin.Mojo mojo, String artifactId, File pom) throws Exception
      Configure the mojo
      Parameters:
      mojo -
      artifactId -
      pom -
      Returns:
      a Mojo instance
      Throws:
      Exception
    • configureMojo

      protected org.apache.maven.plugin.Mojo configureMojo(org.apache.maven.plugin.Mojo mojo, org.codehaus.plexus.configuration.PlexusConfiguration pluginConfiguration) throws Exception
      Configure the mojo with the given plexus configuration
      Parameters:
      mojo -
      pluginConfiguration -
      Returns:
      a Mojo instance
      Throws:
      Exception
    • getVariableValueFromObject

      protected Object getVariableValueFromObject(Object object, String variable) throws IllegalAccessException
      Convenience method to obtain the value of a variable on a mojo that might not have a getter. NOTE: the caller is responsible for casting to to what the desired type is.
      Parameters:
      object -
      variable -
      Returns:
      object value of variable
      Throws:
      IllegalArgumentException
      IllegalAccessException
    • getVariablesAndValuesFromObject

      protected Map<String,Object> getVariablesAndValuesFromObject(Object object) throws IllegalAccessException
      Convenience method to obtain all variables and values from the mojo (including its superclasses) Note: the values in the map are of type Object so the caller is responsible for casting to desired types.
      Parameters:
      object -
      Returns:
      map of variable names and values
      Throws:
      IllegalAccessException
    • getVariablesAndValuesFromObject

      protected Map<String,Object> getVariablesAndValuesFromObject(Class<?> clazz, Object object) throws IllegalAccessException
      Convenience method to obtain all variables and values from the mojo (including its superclasses) Note: the values in the map are of type Object so the caller is responsible for casting to desired types.
      Parameters:
      clazz -
      object -
      Returns:
      map of variable names and values
      Throws:
      IllegalAccessException
    • setVariableValueToObject

      protected void setVariableValueToObject(Object object, String variable, Object value) throws IllegalAccessException
      Convenience method to set values to variables in objects that don't have setters
      Parameters:
      object -
      variable -
      value -
      Throws:
      IllegalAccessException
    • resolveFromRootThenParent

      private String resolveFromRootThenParent(org.codehaus.plexus.util.xml.Xpp3Dom pluginPomDom, String element) throws Exception
      sometimes the parent element might contain the correct value so generalize that access TODO find out where this is probably done elsewhere
      Parameters:
      pluginPomDom -
      element -
      Returns:
      Throws:
      Exception
    • validateContainerStatus

      private void validateContainerStatus() throws Exception
      We should make sure this is called in each method that makes use of the container, otherwise we throw ugly NPE's crops up when the subclassing code defines the setUp method but doesn't call super.setUp()
      Throws:
      Exception