Author: carlos
Date: Fri Jun  1 16:07:00 2007
New Revision: 543655

URL: http://svn.apache.org/viewvc?view=rev&rev=543655
Log:
[MNG-3013] The plugin manager incorrectly caches plugin versions between 
embedder calls, added test case that doesn't show the wrong behaviour yet

Modified:
    
maven/components/trunk/maven-embedder/src/test/java/org/apache/maven/embedder/MavenEmbedderTest.java

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?view=diff&rev=543655&r1=543654&r2=543655
==============================================================================
--- 
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
 Fri Jun  1 16:07:00 2007
@@ -21,10 +21,12 @@
 
 import junit.framework.TestCase;
 import org.apache.maven.SettingsConfigurationException;
+import org.apache.maven.artifact.Artifact;
 import org.apache.maven.artifact.handler.ArtifactHandler;
 import org.apache.maven.execution.DefaultMavenExecutionRequest;
 import org.apache.maven.execution.MavenExecutionRequest;
 import org.apache.maven.execution.MavenExecutionResult;
+import org.apache.maven.model.Build;
 import org.apache.maven.model.Model;
 import org.apache.maven.model.Plugin;
 import org.apache.maven.plugin.PluginManagerException;
@@ -204,6 +206,67 @@
         assertEquals( "jason", p1.getProperties().getProperty( "name" ) );
 
         assertEquals( "somnambulance", p1.getProperties().getProperty( 
"occupation" ) );
+    }
+
+    /**
+     * Test that two executions of the embedder don't share data that has 
changed, see MNG-3013
+     * 
+     * @throws Exception
+     */
+    public void testTwoExecutionsDoNotCacheChangedData()
+        throws Exception
+    {
+        File testDirectory = new File( basedir, 
"src/test/embedder-test-project" );
+
+        File targetDirectory = new File( basedir, 
"target/embedder-test-project-caching" );
+
+        FileUtils.copyDirectoryStructure( testDirectory, targetDirectory );
+
+        File pom = new File( targetDirectory, "pom.xml" );
+
+        /* Add the surefire plugin 2.2 to the pom */
+        Model model = maven.readModel( pom );
+
+        Plugin plugin = new Plugin();
+        plugin.setArtifactId( "maven-surefire-plugin" );
+        plugin.setVersion( "2.2" );
+        model.setBuild( new Build() );
+        model.getBuild().addPlugin( plugin );
+
+        FileWriter writer = new FileWriter( pom );
+        maven.writeModel( new FileWriter( pom ), model );
+        writer.close();
+
+        /* execute maven */
+        MavenExecutionRequest request = new 
DefaultMavenExecutionRequest().setPomFile( pom.getAbsolutePath() )
+            .setShowErrors( true ).setGoals( Arrays.asList( new String[] { 
"package" } ) );
+
+        MavenExecutionResult result = maven.execute( request );
+
+        assertNoExceptions( result );
+
+        MavenProject project = result.getMavenProject();
+
+        Artifact p = (Artifact) project.getPluginArtifactMap().get( 
plugin.getKey() );
+        assertEquals( "2.2", p.getVersion() );
+
+        /* Add the surefire plugin 2.3 to the pom */
+        plugin.setVersion( "2.3" );
+        writer = new FileWriter( pom );
+        maven.writeModel( new FileWriter( pom ), model );
+        writer.close();
+
+        /* execute Maven */
+        request = new DefaultMavenExecutionRequest().setPomFile( 
pom.getAbsolutePath() ).setShowErrors( true )
+            .setGoals( Arrays.asList( new String[] { "package" } ) );
+        result = maven.execute( request );
+
+        assertNoExceptions( result );
+
+        project = result.getMavenProject();
+
+        p = (Artifact) project.getPluginArtifactMap().get( plugin.getKey() );
+        assertEquals( "2.3", p.getVersion() );
     }
 
     // ----------------------------------------------------------------------


Reply via email to