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() );
}
// ----------------------------------------------------------------------