You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@maven.apache.org by jv...@apache.org on 2009/07/22 01:30:27 UTC

svn commit: r796579 - in /maven/components/trunk: maven-core/src/test/java/org/apache/maven/ maven-embedder/src/test/java/org/apache/maven/embedder/ maven-embedder/src/test/java/org/apache/maven/embedder/execution/ maven-embedder/src/test/java/org/apac...

Author: jvanzyl
Date: Tue Jul 21 23:30:26 2009
New Revision: 796579

URL: http://svn.apache.org/viewvc?rev=796579&view=rev
Log:
o using the same technique for the embedder as we are for the core tests
o trying on the grid and then i'll share a test jar

Added:
    maven/components/trunk/maven-embedder/src/test/java/org/apache/maven/embedder/AbstractCoreMavenComponentTestCase.java   (with props)
Removed:
    maven/components/trunk/maven-embedder/src/test/java/org/apache/maven/embedder/execution/
Modified:
    maven/components/trunk/maven-core/src/test/java/org/apache/maven/AbstractCoreMavenComponentTestCase.java
    maven/components/trunk/maven-embedder/src/test/java/org/apache/maven/embedder/MavenEmbedderAligningBasedirTest.java
    maven/components/trunk/maven-embedder/src/test/java/org/apache/maven/embedder/MavenEmbedderTest.java
    maven/components/trunk/maven-embedder/src/test/java/org/apache/maven/embedder/validation/MavenEmbedderCrappySettingsConfigurationTest.java

Modified: maven/components/trunk/maven-core/src/test/java/org/apache/maven/AbstractCoreMavenComponentTestCase.java
URL: http://svn.apache.org/viewvc/maven/components/trunk/maven-core/src/test/java/org/apache/maven/AbstractCoreMavenComponentTestCase.java?rev=796579&r1=796578&r2=796579&view=diff
==============================================================================
--- maven/components/trunk/maven-core/src/test/java/org/apache/maven/AbstractCoreMavenComponentTestCase.java (original)
+++ maven/components/trunk/maven-core/src/test/java/org/apache/maven/AbstractCoreMavenComponentTestCase.java Tue Jul 21 23:30:26 2009
@@ -87,6 +87,7 @@
         MavenExecutionRequest request = new DefaultMavenExecutionRequest()
             .setPom( pom )
             .setProjectPresent( true )
+            .setShowErrors( true )
             .setPluginGroups( Arrays.asList( new String[] { "org.apache.maven.plugins" } ) )
             .setLocalRepository( getLocalRepository() )
             .setRemoteRepositories( getRemoteRepositories() )

Added: maven/components/trunk/maven-embedder/src/test/java/org/apache/maven/embedder/AbstractCoreMavenComponentTestCase.java
URL: http://svn.apache.org/viewvc/maven/components/trunk/maven-embedder/src/test/java/org/apache/maven/embedder/AbstractCoreMavenComponentTestCase.java?rev=796579&view=auto
==============================================================================
--- maven/components/trunk/maven-embedder/src/test/java/org/apache/maven/embedder/AbstractCoreMavenComponentTestCase.java (added)
+++ maven/components/trunk/maven-embedder/src/test/java/org/apache/maven/embedder/AbstractCoreMavenComponentTestCase.java Tue Jul 21 23:30:26 2009
@@ -0,0 +1,306 @@
+package org.apache.maven.embedder;
+
+import java.io.File;
+import java.util.Arrays;
+import java.util.List;
+import java.util.Properties;
+
+import org.apache.maven.artifact.Artifact;
+import org.apache.maven.artifact.InvalidRepositoryException;
+import org.apache.maven.artifact.repository.ArtifactRepository;
+import org.apache.maven.execution.DefaultMavenExecutionRequest;
+import org.apache.maven.execution.DefaultMavenExecutionResult;
+import org.apache.maven.execution.MavenExecutionRequest;
+import org.apache.maven.execution.MavenSession;
+import org.apache.maven.model.Build;
+import org.apache.maven.model.Dependency;
+import org.apache.maven.model.Exclusion;
+import org.apache.maven.model.Model;
+import org.apache.maven.model.Plugin;
+import org.apache.maven.model.Repository;
+import org.apache.maven.project.DefaultProjectBuildingRequest;
+import org.apache.maven.project.MavenProject;
+import org.apache.maven.project.ProjectBuildingRequest;
+import org.apache.maven.repository.RepositorySystem;
+import org.codehaus.plexus.ContainerConfiguration;
+import org.codehaus.plexus.PlexusTestCase;
+import org.codehaus.plexus.component.annotations.Requirement;
+import org.codehaus.plexus.util.FileUtils;
+
+public abstract class AbstractCoreMavenComponentTestCase
+    extends PlexusTestCase
+{
+    @Requirement
+    protected RepositorySystem repositorySystem;
+
+    @Requirement
+    protected org.apache.maven.project.ProjectBuilder projectBuilder;
+
+    protected void setUp()
+        throws Exception
+    {
+        repositorySystem = lookup( RepositorySystem.class );
+        projectBuilder = lookup( org.apache.maven.project.ProjectBuilder.class );
+    }
+
+    @Override
+    protected void tearDown()
+        throws Exception
+    {
+        repositorySystem = null;
+        projectBuilder = null;
+        super.tearDown();
+    }
+
+    abstract protected String getProjectsDirectory();
+
+    protected File getProject( String name )
+        throws Exception
+    {
+        File source = new File( new File( getBasedir(), getProjectsDirectory() ), name );
+        File target = new File( new File( getBasedir(), "target" ), name );
+        if ( !target.exists() )
+        {
+            FileUtils.copyDirectoryStructure( source, target );
+        }
+        return new File( target, "pom.xml" );
+    }
+
+    /**
+     * We need to customize the standard Plexus container with the plugin discovery listener which
+     * is what looks for the META-INF/maven/plugin.xml resources that enter the system when a Maven
+     * plugin is loaded.
+     * 
+     * We also need to customize the Plexus container with a standard plugin discovery listener
+     * which is the MavenPluginCollector. When a Maven plugin is discovered the MavenPluginCollector
+     * collects the plugin descriptors which are found.
+     */
+    protected void customizeContainerConfiguration( ContainerConfiguration containerConfiguration )
+    {
+//        containerConfiguration.addComponentDiscoverer( PluginManager.class );
+//        containerConfiguration.addComponentDiscoveryListener( PluginManager.class );
+    }
+
+    protected MavenExecutionRequest createMavenExecutionRequest( File pom )
+        throws Exception
+    {        
+        MavenExecutionRequest request = new DefaultMavenExecutionRequest()
+            .setPom( pom )
+            .setProjectPresent( true )
+            .setShowErrors( true )
+            .setPluginGroups( Arrays.asList( new String[] { "org.apache.maven.plugins" } ) )
+            .setLocalRepository( getLocalRepository() )
+            .setRemoteRepositories( getRemoteRepositories() )
+            .setPluginArtifactRepositories( getPluginArtifactRepositories() )
+            .setGoals( Arrays.asList( new String[] { "package" } ) )
+            .setProperties( new Properties() );
+
+        return request;
+    }
+
+    // layer the creation of a project builder configuration with a request, but this will need to be
+    // a Maven subclass because we don't want to couple maven to the project builder which we need to
+    // separate.
+    protected MavenSession createMavenSession( File pom )
+        throws Exception        
+    {
+        return createMavenSession( pom, new Properties() );
+    }
+    
+    protected MavenSession createMavenSession( File pom, Properties executionProperties )
+        throws Exception
+    {
+        MavenExecutionRequest request = createMavenExecutionRequest( pom );
+        
+        ProjectBuildingRequest configuration = new DefaultProjectBuildingRequest()
+            .setLocalRepository( request.getLocalRepository() )
+            .setRemoteRepositories( request.getRemoteRepositories() )
+            .setPluginArtifactRepositories( request.getPluginArtifactRepositories() )
+            .setExecutionProperties( executionProperties );
+
+        MavenProject project = null;
+
+        if ( pom != null )
+        {
+            project = projectBuilder.build( pom, configuration );
+        }
+        else
+        {
+            project = createStubMavenProject();
+        }
+
+        MavenSession session = new MavenSession( getContainer(), request, new DefaultMavenExecutionResult(), project );
+
+        return session;
+    }
+
+    protected MavenProject createStubMavenProject()
+    {
+        Model model = new Model();
+        model.setGroupId( "org.apache.maven.test" );
+        model.setArtifactId( "maven-test" );
+        model.setVersion( "1.0" );
+        return new MavenProject( model );
+    }
+    
+    protected List<ArtifactRepository> getRemoteRepositories()
+        throws InvalidRepositoryException
+    {
+        return Arrays.asList( repositorySystem.createDefaultRemoteRepository() );
+    }
+
+    protected List<ArtifactRepository> getPluginArtifactRepositories()
+        throws InvalidRepositoryException
+    {
+        Repository itRepo = new Repository();
+        itRepo.setId( "maven.it" );
+        itRepo.setUrl( "http://repository.sonatype.org/content/repositories/maven.snapshots" );
+        return Arrays.asList(  repositorySystem.createDefaultRemoteRepository(), repositorySystem.buildArtifactRepository( itRepo ) );
+    }
+        
+    protected ArtifactRepository getLocalRepository() 
+        throws InvalidRepositoryException
+    {        
+        return repositorySystem.createDefaultLocalRepository();        
+    }
+    
+    protected class ProjectBuilder
+    {
+        private MavenProject project;
+        
+        public ProjectBuilder( String groupId, String artifactId, String version )
+        {
+            Model model = new Model();
+            model.setModelVersion( "4.0.0" );
+            model.setGroupId( groupId );
+            model.setArtifactId( artifactId );
+            model.setVersion( version );  
+            model.setBuild(  new Build() );
+            project = new MavenProject( model );            
+        }
+        
+        public ProjectBuilder setGroupId( String groupId )
+        {
+            project.setGroupId( groupId );
+            return this;
+        }
+
+        public ProjectBuilder setArtifactId( String artifactId )
+        {
+            project.setArtifactId( artifactId );
+            return this;
+        }
+        
+        public ProjectBuilder setVersion( String version )
+        {
+            project.setVersion( version );
+            return this;
+        }
+        
+        // Dependencies
+        //
+        public ProjectBuilder addDependency( String groupId, String artifactId, String version, String scope )
+        {
+            return addDependency( groupId, artifactId, version, scope, (Exclusion)null );
+        }
+        
+        public ProjectBuilder addDependency( String groupId, String artifactId, String version, String scope, Exclusion exclusion )
+        {
+            return addDependency( groupId, artifactId, version, scope, null, exclusion );            
+        }
+
+        public ProjectBuilder addDependency( String groupId, String artifactId, String version, String scope, String systemPath )
+        {
+            return addDependency( groupId, artifactId, version, scope, systemPath, null );         
+        }
+        
+        public ProjectBuilder addDependency( String groupId, String artifactId, String version, String scope, String systemPath, Exclusion exclusion )
+        {
+            Dependency d = new Dependency();
+            d.setGroupId( groupId );
+            d.setArtifactId( artifactId );
+            d.setVersion( version );
+            d.setScope( scope );
+            
+            if ( systemPath != null && scope.equals(  Artifact.SCOPE_SYSTEM ) )
+            {
+                d.setSystemPath( systemPath );
+            }
+            
+            if ( exclusion != null )
+            {
+                d.addExclusion( exclusion );
+            }
+            
+            project.getDependencies().add( d );
+            
+            return this;
+        }
+        
+        // Plugins
+        //
+        public ProjectBuilder addPlugin( Plugin plugin )
+        {
+            project.getBuildPlugins().add( plugin );            
+            return this;
+        }
+        
+        public MavenProject get()
+        {
+            return project;
+        }        
+    }    
+    
+    protected class PluginBuilder
+    {
+        private Plugin plugin;
+        
+        public PluginBuilder( String groupId, String artifactId, String version )
+        {
+            plugin = new Plugin();
+            plugin.setGroupId( groupId );
+            plugin.setArtifactId( artifactId );
+            plugin.setVersion( version );                         
+        }
+                
+        // Dependencies
+        //
+        public PluginBuilder addDependency( String groupId, String artifactId, String version, String scope, Exclusion exclusion )
+        {
+            return addDependency( groupId, artifactId, version, scope, exclusion );            
+        }
+
+        public PluginBuilder addDependency( String groupId, String artifactId, String version, String scope, String systemPath )
+        {
+            return addDependency( groupId, artifactId, version, scope, systemPath, null );         
+        }
+        
+        public PluginBuilder addDependency( String groupId, String artifactId, String version, String scope, String systemPath, Exclusion exclusion )
+        {
+            Dependency d = new Dependency();
+            d.setGroupId( groupId );
+            d.setArtifactId( artifactId );
+            d.setVersion( version );
+            d.setScope( scope );
+            
+            if ( systemPath != null && scope.equals(  Artifact.SCOPE_SYSTEM ) )
+            {
+                d.setSystemPath( systemPath );
+            }
+            
+            if ( exclusion != null )
+            {
+                d.addExclusion( exclusion );
+            }
+            
+            plugin.getDependencies().add( d );
+            
+            return this;
+        }
+                
+        public Plugin get()
+        {
+            return plugin;
+        }        
+    }        
+}

Propchange: maven/components/trunk/maven-embedder/src/test/java/org/apache/maven/embedder/AbstractCoreMavenComponentTestCase.java
------------------------------------------------------------------------------
    svn:eol-style = native

Propchange: maven/components/trunk/maven-embedder/src/test/java/org/apache/maven/embedder/AbstractCoreMavenComponentTestCase.java
------------------------------------------------------------------------------
    svn:keywords = "Author Date Id Revision"

Modified: maven/components/trunk/maven-embedder/src/test/java/org/apache/maven/embedder/MavenEmbedderAligningBasedirTest.java
URL: http://svn.apache.org/viewvc/maven/components/trunk/maven-embedder/src/test/java/org/apache/maven/embedder/MavenEmbedderAligningBasedirTest.java?rev=796579&r1=796578&r2=796579&view=diff
==============================================================================
--- maven/components/trunk/maven-embedder/src/test/java/org/apache/maven/embedder/MavenEmbedderAligningBasedirTest.java (original)
+++ maven/components/trunk/maven-embedder/src/test/java/org/apache/maven/embedder/MavenEmbedderAligningBasedirTest.java Tue Jul 21 23:30:26 2009
@@ -20,19 +20,15 @@
  */
 
 import java.io.File;
-import java.util.Arrays;
 import java.util.List;
 
-import junit.framework.TestCase;
-
-import org.apache.maven.execution.DefaultMavenExecutionRequest;
 import org.apache.maven.execution.MavenExecutionRequest;
 import org.apache.maven.execution.MavenExecutionResult;
 import org.apache.maven.project.MavenProject;
 import org.codehaus.plexus.util.FileUtils;
 
 public class MavenEmbedderAligningBasedirTest
-    extends TestCase
+    extends AbstractCoreMavenComponentTestCase
 {
     protected String basedir;
 
@@ -93,10 +89,14 @@
 
         FileUtils.copyDirectoryStructure( testDirectory, targetDirectory );
 
+        MavenExecutionRequest request = createMavenExecutionRequest( new File( targetDirectory, "pom.xml" ) );        
+
+        /*
         MavenExecutionRequest request = new DefaultMavenExecutionRequest()
             .setBaseDirectory( targetDirectory )
             .setShowErrors( true )
             .setGoals( Arrays.asList( new String[]{"package"} ) );
+        */
 
         MavenExecutionResult result = mavenEmbedder.execute( request );
 
@@ -110,4 +110,11 @@
 
         assertTrue( jar.exists() );
     }
+
+    @Override
+    protected String getProjectsDirectory()
+    {
+        // TODO Auto-generated method stub
+        return null;
+    }
 }

Modified: maven/components/trunk/maven-embedder/src/test/java/org/apache/maven/embedder/MavenEmbedderTest.java
URL: http://svn.apache.org/viewvc/maven/components/trunk/maven-embedder/src/test/java/org/apache/maven/embedder/MavenEmbedderTest.java?rev=796579&r1=796578&r2=796579&view=diff
==============================================================================
--- maven/components/trunk/maven-embedder/src/test/java/org/apache/maven/embedder/MavenEmbedderTest.java (original)
+++ maven/components/trunk/maven-embedder/src/test/java/org/apache/maven/embedder/MavenEmbedderTest.java Tue Jul 21 23:30:26 2009
@@ -26,8 +26,6 @@
 import java.util.Arrays;
 import java.util.List;
 
-import junit.framework.TestCase;
-
 import org.apache.maven.artifact.Artifact;
 import org.apache.maven.execution.DefaultMavenExecutionRequest;
 import org.apache.maven.execution.MavenExecutionRequest;
@@ -49,7 +47,7 @@
 import org.codehaus.plexus.util.xml.pull.XmlPullParserException;
 
 public class MavenEmbedderTest
-    extends TestCase
+    extends AbstractCoreMavenComponentTestCase
 {
     protected String basedir;
 
@@ -110,10 +108,14 @@
 
         FileUtils.copyDirectoryStructure( testDirectory, targetDirectory );
 
+        MavenExecutionRequest request = createMavenExecutionRequest( new File( targetDirectory, "pom.xml" ) );        
+
+        /*
         MavenExecutionRequest request = new DefaultMavenExecutionRequest()
             .setBaseDirectory( targetDirectory )
             .setShowErrors( true )
             .setGoals( Arrays.asList( new String[]{"package"} ) );
+        */
 
         MavenExecutionResult result = mavenEmbedder.execute( request );
 
@@ -137,10 +139,14 @@
 
         FileUtils.copyDirectoryStructure( testDirectory, targetDirectory );
 
+        MavenExecutionRequest request = createMavenExecutionRequest( new File( targetDirectory, "pom.xml" ) );        
+        
+        /*
         MavenExecutionRequest request = new DefaultMavenExecutionRequest()
             .setBaseDirectory( targetDirectory )
             .setShowErrors( true )
             .setGoals( Arrays.asList( new String[] { "install" } ) );
+        */
 
         MavenExecutionResult result = mavenEmbedder.execute( request );
         
@@ -186,9 +192,13 @@
 
         FileUtils.copyDirectoryStructure( testDirectory, targetDirectory );
 
+        MavenExecutionRequest request = createMavenExecutionRequest( new File( targetDirectory, "pom.xml" ) );        
+
+        /*
         MavenExecutionRequest request = new DefaultMavenExecutionRequest()
             .setPom( new File( targetDirectory, "pom.xml" ) ).setShowErrors( true )
             .setGoals( Arrays.asList( new String[] { "package" } ) );
+        */
 
         MavenExecutionResult result = mavenEmbedder.execute( request );
 
@@ -214,10 +224,14 @@
 
         // Check with profile not active
 
+        MavenExecutionRequest requestWithoutProfile = createMavenExecutionRequest( new File( targetDirectory, "pom.xml" ) );        
+
+        /*
         MavenExecutionRequest requestWithoutProfile = new DefaultMavenExecutionRequest()
             .setPom( new File( targetDirectory, "pom.xml" ) )
             .setShowErrors( true )
             .setGoals( Arrays.asList( new String[] { "validate" } ) );
+        */
 
         MavenExecutionResult r0 = mavenEmbedder.execute( requestWithoutProfile );
 
@@ -233,11 +247,16 @@
 
         // Check with profile activated
 
+        MavenExecutionRequest request = createMavenExecutionRequest( new File( targetDirectory, "pom.xml" ) );        
+        request.addActiveProfile( "embedderProfile" );
+        
+        /*
         MavenExecutionRequest request = new DefaultMavenExecutionRequest()
             .setPom( new File( targetDirectory, "pom.xml" ) )
             .setShowErrors( true )
             .setGoals( Arrays.asList( new String[] { "validate" } ) )
             .addActiveProfile( "embedderProfile" );
+        */
 
         MavenExecutionResult r1 = mavenEmbedder.execute( request );
 
@@ -282,9 +301,12 @@
         mavenEmbedder.writeModel( writer, model );
         writer.close();
 
-        /* execute maven */
+        MavenExecutionRequest request = createMavenExecutionRequest( pom );
+        
+        /*
         MavenExecutionRequest request = new DefaultMavenExecutionRequest().setPom( pom ).setShowErrors( true )
             .setGoals( Arrays.asList( new String[] { "package" } ) );
+        */
 
         MavenExecutionResult result = mavenEmbedder.execute( request );
 
@@ -301,9 +323,13 @@
         mavenEmbedder.writeModel( writer, model );
         writer.close();
 
-        /* execute Maven */
+        request = createMavenExecutionRequest( pom );
+        
+        /*
         request = new DefaultMavenExecutionRequest().setPom( pom ).setShowErrors( true )
             .setGoals( Arrays.asList( new String[] { "package" } ) );
+        */
+            
         result = mavenEmbedder.execute( request );
 
         assertNoExceptions( result );
@@ -314,22 +340,6 @@
         assertEquals( "2.4.3", p.getVersion() );
     }
 
-    // ----------------------------------------------------------------------
-    // Repository
-    // ----------------------------------------------------------------------
-
-    /*
-    public void testLocalRepositoryRetrieval()
-        throws Exception
-    {
-        assertNotNull( mavenEmbedder.getLocalRepository().getBasedir() );
-    }
-    */
-
-    // ----------------------------------------------------------------------
-    // Model Reading
-    // ----------------------------------------------------------------------
-
     public void testModelReading()
         throws Exception
     {
@@ -520,4 +530,9 @@
         return new File( basedir, "src/test/resources/" + name );
     }
 
+    @Override
+    protected String getProjectsDirectory()
+    {
+        return null;
+    }
 }

Modified: maven/components/trunk/maven-embedder/src/test/java/org/apache/maven/embedder/validation/MavenEmbedderCrappySettingsConfigurationTest.java
URL: http://svn.apache.org/viewvc/maven/components/trunk/maven-embedder/src/test/java/org/apache/maven/embedder/validation/MavenEmbedderCrappySettingsConfigurationTest.java?rev=796579&r1=796578&r2=796579&view=diff
==============================================================================
--- maven/components/trunk/maven-embedder/src/test/java/org/apache/maven/embedder/validation/MavenEmbedderCrappySettingsConfigurationTest.java (original)
+++ maven/components/trunk/maven-embedder/src/test/java/org/apache/maven/embedder/validation/MavenEmbedderCrappySettingsConfigurationTest.java Tue Jul 21 23:30:26 2009
@@ -20,20 +20,18 @@
  */
 
 import java.io.File;
-import java.util.Arrays;
 
+import org.apache.maven.embedder.AbstractCoreMavenComponentTestCase;
 import org.apache.maven.embedder.Configuration;
 import org.apache.maven.embedder.ConfigurationValidationResult;
 import org.apache.maven.embedder.MavenEmbedder;
 import org.apache.maven.embedder.SimpleConfiguration;
-import org.apache.maven.execution.DefaultMavenExecutionRequest;
 import org.apache.maven.execution.MavenExecutionRequest;
 import org.apache.maven.execution.MavenExecutionResult;
 import org.apache.maven.project.MavenProject;
-import org.codehaus.plexus.PlexusTestCase;
 
 public class MavenEmbedderCrappySettingsConfigurationTest
-    extends PlexusTestCase
+    extends AbstractCoreMavenComponentTestCase
 {
     public void testEmbedderWillStillStartupWhenTheSettingsConfigurationIsCrap()
         throws Exception
@@ -55,9 +53,13 @@
 
         //assertNotNull( embedder.getLocalRepository().getBasedir() );
 
+        MavenExecutionRequest request = createMavenExecutionRequest( new File( projectDirectory, "pom.xml" ) );        
+        
+        /*
         MavenExecutionRequest request = new DefaultMavenExecutionRequest()
             .setBaseDirectory( projectDirectory )
             .setGoals( Arrays.asList( new String[]{"validate"} ) );
+        */
 
         MavenExecutionResult result = embedder.execute( request );
         
@@ -78,4 +80,11 @@
 
         // END SNIPPET: simple-embedder-example
     }
+
+    @Override
+    protected String getProjectsDirectory()
+    {
+        // TODO Auto-generated method stub
+        return null;
+    }
 }