You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@maven.apache.org by jd...@apache.org on 2008/01/14 22:45:09 UTC

svn commit: r611945 [2/2] - in /maven/components/trunk: maven-core/src/main/aspect/org/apache/maven/errors/ maven-core/src/main/java/org/apache/maven/errors/ maven-core/src/main/java/org/apache/maven/lifecycle/ maven-core/src/main/resources/META-INF/pl...

Modified: maven/components/trunk/maven-embedder/src/test/java/org/apache/maven/error/ErrorReporterPointcutTest.java
URL: http://svn.apache.org/viewvc/maven/components/trunk/maven-embedder/src/test/java/org/apache/maven/error/ErrorReporterPointcutTest.java?rev=611945&r1=611944&r2=611945&view=diff
==============================================================================
--- maven/components/trunk/maven-embedder/src/test/java/org/apache/maven/error/ErrorReporterPointcutTest.java (original)
+++ maven/components/trunk/maven-embedder/src/test/java/org/apache/maven/error/ErrorReporterPointcutTest.java Mon Jan 14 13:44:59 2008
@@ -14,6 +14,8 @@
 import org.apache.maven.execution.MavenExecutionRequest;
 import org.apache.maven.execution.MavenExecutionResult;
 import org.apache.maven.model.io.xpp3.MavenXpp3Reader;
+import org.apache.maven.plugin.PluginManagerException;
+import org.apache.maven.settings.Settings;
 import org.codehaus.plexus.logging.Logger;
 import org.codehaus.plexus.util.FileUtils;
 import org.codehaus.plexus.util.xml.pull.XmlPullParserException;
@@ -22,6 +24,7 @@
 import java.io.File;
 import java.io.IOException;
 import java.io.PrintWriter;
+import java.io.StringReader;
 import java.io.StringWriter;
 import java.net.URISyntaxException;
 import java.util.Arrays;
@@ -34,6 +37,8 @@
     extends TestCase
 {
 
+    private static final int ONE_SECOND = 1000;
+
     private MockControl reporterCtl;
 
     private CoreErrorReporter reporter;
@@ -81,29 +86,39 @@
                                            "http://repo1.maven.org/maven2/org/apache/maven/maven-core/2.0/maven-core-2.0.pom" );
 
             HttpConnectionManager mgr = client.getHttpConnectionManager();
-            mgr.getParams().setConnectionTimeout( 1 );
+            mgr.getParams().setConnectionTimeout( 3 * ONE_SECOND );
 
             try
             {
                 int result = client.executeMethod( get );
                 if ( result == HttpStatus.SC_OK )
                 {
-                    new MavenXpp3Reader().read( get.getResponseBodyAsStream() );
+                    String body = get.getResponseBodyAsString();
+                    new MavenXpp3Reader().read( new StringReader( body ) );
                     isOffline = false;
                 }
+                else
+                {
+                    System.out.println( "Got HTTP status of: " + result );
+                    System.out.println( "System is offline" );
+                    isOffline = true;
+                }
             }
             catch ( HttpException e )
             {
+                System.out.println( "Got error: " + e.getMessage() );
                 System.out.println( "System is offline" );
                 isOffline = true;
             }
             catch ( IOException e )
             {
+                System.out.println( "Got error: " + e.getMessage() );
                 System.out.println( "System is offline" );
                 isOffline = true;
             }
             catch ( XmlPullParserException e )
             {
+                System.out.println( "Got error: " + e.getMessage() );
                 System.out.println( "System is offline" );
                 isOffline = true;
             }
@@ -152,37 +167,82 @@
             }
         }
 
-        FileUtils.copyDirectoryStructure( testDirectory, targetDirectory );
+        if ( testDirectory.exists() )
+        {
+            FileUtils.copyDirectoryStructure( testDirectory, targetDirectory );
+        }
+        else
+        {
+            testDirectory.mkdirs();
+        }
 
         return targetDirectory;
     }
 
-    public void testHandleErrorBuildingExtensionPluginPOM()
-        throws URISyntaxException
+    private void buildTestAccessory( File basedir )
     {
-        // TODO Auto-generated method stub
+        MavenExecutionRequest request = new DefaultMavenExecutionRequest().setBaseDirectory( basedir )
+                                                                          .setShowErrors( true )
+                                                                          .setErrorReporter( new DummyCoreErrorReporter() )
+                                                                          .setGoals( Arrays.asList( new String[] {
+                                                                              "clean",
+                                                                              "install"
+                                                                          } ) );
 
+        MavenExecutionResult result = maven.execute( request );
+
+        if ( result.hasExceptions() )
+        {
+            reportExceptions( result, basedir );
+        }
     }
 
-    public void testHandleProjectBuildingError()
+    private void reportExceptions( MavenExecutionResult result, File basedir )
     {
-        // TODO Auto-generated method stub
+        StringWriter writer = new StringWriter();
+        PrintWriter pWriter = new PrintWriter( writer );
 
-    }
+        writer.write( "Failed to build project in: " );
+        writer.write( basedir.getPath() );
+        writer.write( "\nEncountered the following errors:" );
 
-    public void testHandleSuperPomBuildingError_XmlPullParserException()
-    {
-        // TODO Auto-generated method stub
+        for ( Iterator it = result.getExceptions().iterator(); it.hasNext(); )
+        {
+            Throwable error = (Throwable) it.next();
+            writer.write( "\n\n" );
+            error.printStackTrace( pWriter );
+        }
 
+        fail( writer.toString() );
     }
 
-    public void testHandleSuperPomBuildingError_IOException()
+    // FIXME: Figure out how to keep the project-build error report from being the primary report...
+    public void testReportErrorResolvingExtensionDirectDependencies()
+        throws URISyntaxException, IOException
     {
-        // TODO Auto-generated method stub
-
+//        File projectDir = prepareProjectDir();
+//        File localRepo = new File( projectDir, "local-repo" );
+//        File project = new File( projectDir, "project" );
+//
+//        reporter.reportErrorResolvingExtensionDirectDependencies( null, null, null, null, null );
+//        reporterCtl.setMatcher( MockControl.ALWAYS_MATCHER );
+//        reporterCtl.setVoidCallable();
+//
+//        reporterCtl.replay();
+//
+//        MavenExecutionRequest request = new DefaultMavenExecutionRequest().setBaseDirectory( project )
+//                                                                          .setLocalRepositoryPath( localRepo )
+//                                                                          .setShowErrors( true )
+//                                                                          .setErrorReporter( reporter )
+//                                                                          .setGoals( Arrays.asList( new String[] {
+//                                                                              "initialize"
+//                                                                          } ) );
+//
+//        maven.execute( request );
+//
+//        reporterCtl.verify();
     }
 
-    // FIXME: Fix the offline detection for this one!
     public void testReportAggregatedMojoFailureException()
         throws URISyntaxException, IOException
     {
@@ -215,38 +275,6 @@
         reporterCtl.verify();
     }
 
-    private void buildTestAccessory( File basedir )
-    {
-        MavenExecutionRequest request = new DefaultMavenExecutionRequest().setBaseDirectory( basedir )
-                                                                          .setShowErrors( true )
-                                                                          .setErrorReporter( new DummyCoreErrorReporter() )
-                                                                          .setGoals( Arrays.asList( new String[] {
-                                                                              "clean",
-                                                                              "install"
-                                                                          } ) );
-
-        MavenExecutionResult result = maven.execute( request );
-
-        if ( result.hasExceptions() )
-        {
-            StringWriter writer = new StringWriter();
-            PrintWriter pWriter = new PrintWriter( writer );
-
-            writer.write( "Failed to build project in: " );
-            writer.write( basedir.getPath() );
-            writer.write( "\nEncountered the following errors:" );
-
-            for ( Iterator it = result.getExceptions().iterator(); it.hasNext(); )
-            {
-                Throwable error = (Throwable) it.next();
-                writer.write( "\n\n" );
-                error.printStackTrace( pWriter );
-            }
-
-            fail( writer.toString() );
-        }
-    }
-
     public void testReportAttemptToOverrideUneditableMojoParameter()
     {
         // TODO Auto-generated method stub
@@ -260,15 +288,62 @@
     }
 
     public void testReportErrorConfiguringExtensionPluginRealm()
+        throws URISyntaxException, IOException
     {
-        // TODO Auto-generated method stub
+        File projectDir = prepareProjectDir();
+
+        buildTestAccessory( new File( projectDir, "plugin" ) );
+
+        File project = new File( projectDir, "project" );
+
+        reporter.reportErrorConfiguringExtensionPluginRealm( null, null, null, null, (PluginManagerException) null );
+        reporterCtl.setMatcher( MockControl.ALWAYS_MATCHER );
+        reporterCtl.setVoidCallable();
+
+        reporterCtl.replay();
+
+        MavenExecutionRequest request = new DefaultMavenExecutionRequest().setBaseDirectory( project )
+                                                                          .setShowErrors( true )
+                                                                          .setErrorReporter( reporter )
+                                                                          .setGoals( Arrays.asList( new String[] {
+                                                                              "initialize"
+                                                                          } ) );
+
+        maven.execute( request );
 
+        reporterCtl.verify();
     }
 
     public void testReportErrorFormulatingBuildPlan()
+        throws URISyntaxException, IOException
     {
-        // TODO Auto-generated method stub
+        if ( !checkOnline() )
+        {
+            return;
+        }
+
+        File projectDir = prepareProjectDir();
+
+        buildTestAccessory( new File( projectDir, "plugin" ) );
+
+        File basedir = new File( projectDir, "project" );
+
+        reporter.reportErrorFormulatingBuildPlan( null, null, null, null );
+        reporterCtl.setMatcher( MockControl.ALWAYS_MATCHER );
+        reporterCtl.setVoidCallable();
+
+        reporterCtl.replay();
+
+        MavenExecutionRequest request = new DefaultMavenExecutionRequest().setBaseDirectory( basedir )
+                                                                          .setShowErrors( true )
+                                                                          .setErrorReporter( reporter )
+                                                                          .setGoals( Arrays.asList( new String[] {
+                                                                              "org.apache.maven.errortest:testReportErrorFormulatingBuildPlan-maven-plugin:1:test"
+                                                                          } ) );
+
+        maven.execute( request );
 
+        reporterCtl.verify();
     }
 
     public void testReportErrorInterpolatingModel_UsingProjectInstance()
@@ -284,27 +359,56 @@
     }
 
     public void testReportErrorManagingRealmForExtension()
+        throws URISyntaxException, IOException
     {
-        // TODO Auto-generated method stub
+        File projectDir = prepareProjectDir();
 
-    }
+        buildTestAccessory( new File( projectDir, "ext" ) );
 
-    public void testReportErrorManagingRealmForExtensionPlugin()
-    {
-        // TODO Auto-generated method stub
+        File project = new File( projectDir, "project" );
+
+        reporter.reportErrorManagingRealmForExtension( null, null, null, null, null );
+        reporterCtl.setMatcher( MockControl.ALWAYS_MATCHER );
+        reporterCtl.setVoidCallable();
+
+        reporterCtl.replay();
 
+        MavenExecutionRequest request = new DefaultMavenExecutionRequest().setBaseDirectory( project )
+                                                                          .setShowErrors( true )
+                                                                          .setErrorReporter( reporter )
+                                                                          .setGoals( Arrays.asList( new String[] {
+                                                                              "initialize"
+                                                                          } ) );
+
+        maven.execute( request );
+
+        reporterCtl.verify();
     }
 
     public void testReportErrorResolvingExtensionDependencies()
+        throws URISyntaxException, IOException
     {
-        // TODO Auto-generated method stub
+        File projectDir = prepareProjectDir();
+        File localRepo = new File( projectDir, "local-repo" );
+        File project = new File( projectDir, "project" );
 
-    }
+        reporter.reportErrorResolvingExtensionDependencies( null, null, null, null, null, null );
+        reporterCtl.setMatcher( MockControl.ALWAYS_MATCHER );
+        reporterCtl.setVoidCallable();
 
-    public void testReportErrorResolvingExtensionDirectDependencies()
-    {
-        // TODO Auto-generated method stub
+        reporterCtl.replay();
+
+        MavenExecutionRequest request = new DefaultMavenExecutionRequest().setBaseDirectory( project )
+                                                                          .setLocalRepositoryPath( localRepo )
+                                                                          .setShowErrors( true )
+                                                                          .setErrorReporter( reporter )
+                                                                          .setGoals( Arrays.asList( new String[] {
+                                                                              "initialize"
+                                                                          } ) );
+
+        maven.execute( request );
 
+        reporterCtl.verify();
     }
 
     public void testReportErrorSearchingforCompatibleExtensionPluginVersion()
@@ -338,9 +442,26 @@
     }
 
     public void testReportInvalidMavenVersion()
+        throws URISyntaxException, IOException
     {
-        // TODO Auto-generated method stub
+        File projectDir = prepareProjectDir();
+
+        reporter.reportInvalidMavenVersion( null, null, null );
+        reporterCtl.setMatcher( MockControl.ALWAYS_MATCHER );
+        reporterCtl.setVoidCallable();
+
+        reporterCtl.replay();
+
+        MavenExecutionRequest request = new DefaultMavenExecutionRequest().setBaseDirectory( projectDir )
+                                                                          .setShowErrors( true )
+                                                                          .setErrorReporter( reporter )
+                                                                          .setGoals( Arrays.asList( new String[] {
+                                                                              "initialize"
+                                                                          } ) );
+
+        maven.execute( request );
 
+        reporterCtl.verify();
     }
 
     public void testReportInvalidPluginExecutionEnvironment()
@@ -367,15 +488,52 @@
     }
 
     public void testReportLifecycleLoaderErrorWhileValidatingTask()
+        throws URISyntaxException, IOException
     {
-        // TODO Auto-generated method stub
+        File projectDir = prepareProjectDir();
+        File localRepo = new File( projectDir, "local-repo" );
+
+        Settings settings = new Settings();
+        settings.setLocalRepository( localRepo.getAbsolutePath() );
+        settings.setOffline( true );
+
+        reporter.reportLifecycleLoaderErrorWhileValidatingTask( null, null, null, null );
+        reporterCtl.setMatcher( MockControl.ALWAYS_MATCHER );
+        reporterCtl.setVoidCallable();
+
+        reporterCtl.replay();
+
+        MavenExecutionRequest request = new DefaultMavenExecutionRequest().setBaseDirectory( projectDir )
+                                                                          .setShowErrors( true )
+                                                                          .setLoggingLevel( Logger.LEVEL_DEBUG )
+                                                                          .setSettings( settings )
+                                                                          .setErrorReporter( reporter )
+                                                                          .setGoals( Arrays.asList( new String[] {
+                                                                              "invalid:test"
+                                                                          } ) );
+
+        maven.execute( request );
 
+        reporterCtl.verify();
     }
 
     public void testReportLifecycleSpecErrorWhileValidatingTask()
     {
-        // TODO Auto-generated method stub
+        reporter.reportLifecycleSpecErrorWhileValidatingTask( null, null, null, null );
+        reporterCtl.setMatcher( MockControl.ALWAYS_MATCHER );
+        reporterCtl.setVoidCallable();
+
+        reporterCtl.replay();
+
+        MavenExecutionRequest request = new DefaultMavenExecutionRequest().setShowErrors( true )
+                                                                          .setErrorReporter( reporter )
+                                                                          .setGoals( Arrays.asList( new String[] {
+                                                                              "name:of:invalid:direct:mojo:for:test"
+                                                                          } ) );
+
+        maven.execute( request );
 
+        reporterCtl.verify();
     }
 
     public void testReportMissingArtifactWhileAddingExtensionPlugin()
@@ -426,18 +584,6 @@
     }
 
     public void testReportPluginErrorWhileValidatingTask()
-    {
-        // TODO Auto-generated method stub
-
-    }
-
-    public void testReportPomFileCanonicalizationError()
-    {
-        // TODO Auto-generated method stub
-
-    }
-
-    public void testReportPomFileScanningError()
     {
         // TODO Auto-generated method stub
 

Modified: maven/components/trunk/maven-project/src/main/java/org/apache/maven/project/artifact/MavenMetadataSource.java
URL: http://svn.apache.org/viewvc/maven/components/trunk/maven-project/src/main/java/org/apache/maven/project/artifact/MavenMetadataSource.java?rev=611945&r1=611944&r2=611945&view=diff
==============================================================================
--- maven/components/trunk/maven-project/src/main/java/org/apache/maven/project/artifact/MavenMetadataSource.java (original)
+++ maven/components/trunk/maven-project/src/main/java/org/apache/maven/project/artifact/MavenMetadataSource.java Mon Jan 14 13:44:59 2008
@@ -127,6 +127,12 @@
                 }
                 catch ( InvalidProjectModelException e )
                 {
+                    if ( strictlyEnforceThePresenceOfAValidMavenPOM )
+                    {
+                        throw new ArtifactMetadataRetrievalException( "Invalid POM file for artifact: '" +
+                            artifact.getDependencyConflictId() + "' Reason: " + e.getMessage(), e, artifact );
+                    }
+
                     getLogger().warn( "POM for \'" + pomArtifact +
                         "\' is invalid. It will be ignored for artifact resolution. Reason: " + e.getMessage() );
 

Modified: maven/components/trunk/maven-project/src/main/resources/META-INF/plexus/components.xml
URL: http://svn.apache.org/viewvc/maven/components/trunk/maven-project/src/main/resources/META-INF/plexus/components.xml?rev=611945&r1=611944&r2=611945&view=diff
==============================================================================
--- maven/components/trunk/maven-project/src/main/resources/META-INF/plexus/components.xml (original)
+++ maven/components/trunk/maven-project/src/main/resources/META-INF/plexus/components.xml Mon Jan 14 13:44:59 2008
@@ -263,6 +263,23 @@
 
     <component>
       <role>org.apache.maven.artifact.metadata.ArtifactMetadataSource</role>
+      <role-hint>maven-strict</role-hint>
+      <implementation>org.apache.maven.project.artifact.MavenMetadataSource</implementation>
+      <configuration>
+        <strictlyEnforceThePresenceOfAValidMavenPOM>true</strictlyEnforceThePresenceOfAValidMavenPOM>
+      </configuration>
+      <requirements>
+        <requirement>
+          <role>org.apache.maven.artifact.factory.ArtifactFactory</role>
+        </requirement>
+        <requirement>
+          <role>org.apache.maven.artifact.repository.metadata.RepositoryMetadataManager</role>
+        </requirement>
+      </requirements>
+    </component>
+
+    <component>
+      <role>org.apache.maven.artifact.metadata.ArtifactMetadataSource</role>
       <role-hint>default</role-hint>
       <implementation>org.apache.maven.project.artifact.MavenMetadataSource</implementation>
       <requirements>