You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@maven.apache.org by br...@apache.org on 2007/07/24 04:20:13 UTC

svn commit: r558915 - in /maven/core-integration-testing/trunk/maven-integration-test: ./ src/test/java/org/apache/maven/integrationtests/ src/test/resources/it0111-pluginThatRequiresResourceFromAnExtension/ src/test/resources/mng-xxxx-descriptionOfPro...

Author: brianf
Date: Mon Jul 23 19:20:12 2007
New Revision: 558915

URL: http://svn.apache.org/viewvc?view=rev&rev=558915
Log:
changes to sample to make it generic and self documenting

Added:
    maven/core-integration-testing/trunk/maven-integration-test/src/test/java/org/apache/maven/integrationtests/MavenITmngXXXXDescriptionOfProblemTest.java
      - copied, changed from r557106, maven/core-integration-testing/trunk/maven-integration-test/src/test/java/org/apache/maven/integrationtests/MavenIT0111PluginsThatRequireAResourceFromAnExtensionTest.java
    maven/core-integration-testing/trunk/maven-integration-test/src/test/resources/mng-xxxx-descriptionOfProblem/
      - copied from r557106, maven/core-integration-testing/trunk/maven-integration-test/src/test/resources/it0111-pluginThatRequiresResourceFromAnExtension/
    maven/core-integration-testing/trunk/maven-integration-test/src/test/resources/mng-xxxx-descriptionOfProblem/readme.txt
Removed:
    maven/core-integration-testing/trunk/maven-integration-test/src/test/java/org/apache/maven/integrationtests/MavenIT0111PluginsThatRequireAResourceFromAnExtensionTest.java
    maven/core-integration-testing/trunk/maven-integration-test/src/test/resources/it0111-pluginThatRequiresResourceFromAnExtension/
Modified:
    maven/core-integration-testing/trunk/maven-integration-test/   (props changed)
    maven/core-integration-testing/trunk/maven-integration-test/pom.xml
    maven/core-integration-testing/trunk/maven-integration-test/src/test/resources/mng-xxxx-descriptionOfProblem/checkstyle-assembly/   (props changed)
    maven/core-integration-testing/trunk/maven-integration-test/src/test/resources/mng-xxxx-descriptionOfProblem/checkstyle-assembly/pom.xml
    maven/core-integration-testing/trunk/maven-integration-test/src/test/resources/mng-xxxx-descriptionOfProblem/checkstyle-test/pom.xml
    maven/core-integration-testing/trunk/maven-integration-test/src/test/resources/mng-xxxx-descriptionOfProblem/pom.xml

Propchange: maven/core-integration-testing/trunk/maven-integration-test/
------------------------------------------------------------------------------
--- svn:ignore (added)
+++ svn:ignore Mon Jul 23 19:20:12 2007
@@ -0,0 +1 @@
+target

Modified: maven/core-integration-testing/trunk/maven-integration-test/pom.xml
URL: http://svn.apache.org/viewvc/maven/core-integration-testing/trunk/maven-integration-test/pom.xml?view=diff&rev=558915&r1=558914&r2=558915
==============================================================================
--- maven/core-integration-testing/trunk/maven-integration-test/pom.xml (original)
+++ maven/core-integration-testing/trunk/maven-integration-test/pom.xml Mon Jul 23 19:20:12 2007
@@ -11,10 +11,10 @@
       <version>1.0</version>
     </dependency>
     <dependency>
-      <groupId>org.apache.maven.its</groupId>
-      <artifactId>maven-integration-test-helper</artifactId>
-      <version>1.0-SNAPSHOT</version>
-    </dependency>    
+	  <groupId>org.apache.maven.its</groupId>
+	  <artifactId>maven-integration-test-helper</artifactId>
+	  <version>1.0-SNAPSHOT</version>
+	</dependency>
     <dependency>
       <groupId>junit</groupId>
       <artifactId>junit</artifactId>
@@ -22,4 +22,17 @@
       <scope>test</scope>
     </dependency>
   </dependencies>
+   <!-- TODO: remove when snapshots are released -->
+	<repositories>
+		<repository>
+			<id>apache.snapshots</id>
+			<url>http://people.apache.org/repo/m2-snapshot-repository</url>
+			<releases>
+				<enabled>false</enabled>
+			</releases>
+			<snapshots>
+			    <enabled>true</enabled>
+			</snapshots>
+		</repository>
+	</repositories>
 </project>

Copied: maven/core-integration-testing/trunk/maven-integration-test/src/test/java/org/apache/maven/integrationtests/MavenITmngXXXXDescriptionOfProblemTest.java (from r557106, maven/core-integration-testing/trunk/maven-integration-test/src/test/java/org/apache/maven/integrationtests/MavenIT0111PluginsThatRequireAResourceFromAnExtensionTest.java)
URL: http://svn.apache.org/viewvc/maven/core-integration-testing/trunk/maven-integration-test/src/test/java/org/apache/maven/integrationtests/MavenITmngXXXXDescriptionOfProblemTest.java?view=diff&rev=558915&p1=maven/core-integration-testing/trunk/maven-integration-test/src/test/java/org/apache/maven/integrationtests/MavenIT0111PluginsThatRequireAResourceFromAnExtensionTest.java&r1=557106&p2=maven/core-integration-testing/trunk/maven-integration-test/src/test/java/org/apache/maven/integrationtests/MavenITmngXXXXDescriptionOfProblemTest.java&r2=558915
==============================================================================
--- maven/core-integration-testing/trunk/maven-integration-test/src/test/java/org/apache/maven/integrationtests/MavenIT0111PluginsThatRequireAResourceFromAnExtensionTest.java (original)
+++ maven/core-integration-testing/trunk/maven-integration-test/src/test/java/org/apache/maven/integrationtests/MavenITmngXXXXDescriptionOfProblemTest.java Mon Jul 23 19:20:12 2007
@@ -7,39 +7,107 @@
 import org.apache.maven.it.Verifier;
 import org.apache.maven.it.util.ResourceExtractor;
 
-//!! public class ${className}
-public class MavenIT0111PluginsThatRequireAResourceFromAnExtensionTest
+/**
+ * This is a sample integration test. The IT tests typically
+ * operate by having a sample project in the
+ * /src/test/resources folder along with a junit test like
+ * this one. The junit test uses the verifier (which uses
+ * the invoker) to invoke a new instance of Maven on the
+ * project in the resources folder. It then checks the
+ * results. This is a non-trivial example that shows two
+ * phases. See more information inline in the code.
+ * 
+ * @author <a href="mailto:brianf@apache.org">Brian Fox</a>
+ * 
+ */
+public class MavenITmngXXXXDescriptionOfProblemTest
     extends AbstractMavenIntegrationTestCase
 {
-    public void testit0111()
+    public void testitMNGxxxx ()
         throws Exception
     {
-        File testDir =
-            ResourceExtractor.simpleExtractResources( getClass(), "/it0111-pluginThatRequiresResourceFromAnExtension" );
+        // TODO: RENAME THIS TEST TO SUIT YOUR SCENARIO.
+        // Usign the Jira issue id this reproduces is a good
+        // start, along with a description:
+        // ie MNG-13x-HoustonWeHaveAProblemTest  (must end in test)
+
+        // The testdir is computed from the location of this
+        // file.
+        File testDir = ResourceExtractor.simpleExtractResources( getClass(), "/mng-xxxx-descriptionOfProblem" );
 
         Verifier verifier;
 
-        // Install the parent POM
+        /*
+         * We must first make sure that any artifact created
+         * by this test has been removed from the local
+         * repository. Failing to do this could cause
+         * unstable test results. Fortunately, the verifier
+         * makes it easy to do this.
+         */
         verifier = new Verifier( testDir.getAbsolutePath() );
-        verifier.deleteArtifact( "org.apache.maven.its.it0111", "parent", "1.0", "pom" );                
-        verifier.deleteArtifact( "org.apache.maven.its.it0111", "checkstyle-test", "1.0", "jar" );
-        verifier.deleteArtifact( "org.apache.maven.its.it0111", "checkstyle-assembly", "1.0", "jar" );
+        verifier.deleteArtifact( "org.apache.maven.its.itsample", "parent", "1.0", "pom" );
+        verifier.deleteArtifact( "org.apache.maven.its.itsample", "checkstyle-test", "1.0", "jar" );
+        verifier.deleteArtifact( "org.apache.maven.its.itsample", "checkstyle-assembly", "1.0", "jar" );
+
+        /*
+         * The Command Line Options (CLI) are passed to the
+         * verifier as a list. This is handy for things like
+         * redefining the local repository if needed. In
+         * this case, we use the -N flag so that Maven won't
+         * recurse. We are only installing the parent pom to
+         * the local repo here.
+         */
         List cliOptions = new ArrayList();
         cliOptions.add( "-N" );
         verifier.executeGoal( "install" );
+
+        /*
+         * This is the simplest way to check a build
+         * succeeded. It is also the simplest way to create
+         * an IT test: make the build pass when the test
+         * should pass, and make the build fail when the
+         * test should fail. There are other methods
+         * supported by the verifier. They can be seen here:
+         * http://maven.apache.org/shared/maven-verifier/apidocs/index.html
+         */
         verifier.verifyErrorFreeLog();
+
+        /*
+         * Reset the streams before executing the verifier
+         * again.
+         */
         verifier.resetStreams();
 
-        // Install the extension with the resources required for the test
+        /*
+         * This particular test requires an extension
+         * containing resources to be installed that is then
+         * used by the actual IT test. Here we invoker Maven
+         * again to install it. Again, this is just
+         * preparation for the test.
+         */
         verifier = new Verifier( new File( testDir.getAbsolutePath(), "checkstyle-assembly" ).getAbsolutePath() );
         verifier.executeGoal( "install" );
         verifier.verifyErrorFreeLog();
         verifier.resetStreams();
 
-        // Run the whole test
+        /*
+         * Now we are running the actual test. This
+         * particular test will attempt to load the
+         * resources from the extension jar previously
+         * installed. If Maven doesn't pass this to the
+         * classpath correctly, the build will fail. This
+         * particular test will fail in Maven <2.0.6.
+         */
         verifier = new Verifier( new File( testDir.getAbsolutePath(), "checkstyle-test" ).getAbsolutePath() );
         verifier.executeGoal( "install" );
         verifier.verifyErrorFreeLog();
         verifier.resetStreams();
+
+        /*
+         * The verifier also supports beanshell scripts for
+         * verification of more complex scenarios. There are
+         * plenty of examples in the core-it tests here:
+         * http://svn.apache.org/repos/asf/maven/core-integration-testing/trunk
+         */
     }
 }

Propchange: maven/core-integration-testing/trunk/maven-integration-test/src/test/resources/mng-xxxx-descriptionOfProblem/checkstyle-assembly/
------------------------------------------------------------------------------
--- svn:ignore (added)
+++ svn:ignore Mon Jul 23 19:20:12 2007
@@ -0,0 +1 @@
+target

Modified: maven/core-integration-testing/trunk/maven-integration-test/src/test/resources/mng-xxxx-descriptionOfProblem/checkstyle-assembly/pom.xml
URL: http://svn.apache.org/viewvc/maven/core-integration-testing/trunk/maven-integration-test/src/test/resources/mng-xxxx-descriptionOfProblem/checkstyle-assembly/pom.xml?view=diff&rev=558915&r1=557106&r2=558915
==============================================================================
--- maven/core-integration-testing/trunk/maven-integration-test/src/test/resources/mng-xxxx-descriptionOfProblem/checkstyle-assembly/pom.xml (original)
+++ maven/core-integration-testing/trunk/maven-integration-test/src/test/resources/mng-xxxx-descriptionOfProblem/checkstyle-assembly/pom.xml Mon Jul 23 19:20:12 2007
@@ -2,7 +2,7 @@
   xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
   <modelVersion>4.0.0</modelVersion>
   <parent>
-    <groupId>org.apache.maven.its.it0111</groupId>
+    <groupId>org.apache.maven.its.itsample</groupId>
     <artifactId>parent</artifactId>
     <version>1</version>
   </parent>

Modified: maven/core-integration-testing/trunk/maven-integration-test/src/test/resources/mng-xxxx-descriptionOfProblem/checkstyle-test/pom.xml
URL: http://svn.apache.org/viewvc/maven/core-integration-testing/trunk/maven-integration-test/src/test/resources/mng-xxxx-descriptionOfProblem/checkstyle-test/pom.xml?view=diff&rev=558915&r1=557106&r2=558915
==============================================================================
--- maven/core-integration-testing/trunk/maven-integration-test/src/test/resources/mng-xxxx-descriptionOfProblem/checkstyle-test/pom.xml (original)
+++ maven/core-integration-testing/trunk/maven-integration-test/src/test/resources/mng-xxxx-descriptionOfProblem/checkstyle-test/pom.xml Mon Jul 23 19:20:12 2007
@@ -1,7 +1,7 @@
 <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
   <modelVersion>4.0.0</modelVersion>
   <parent>
-    <groupId>org.apache.maven.its.it0111</groupId>
+    <groupId>org.apache.maven.its.itsample</groupId>
     <artifactId>parent</artifactId>
     <version>1</version>
   </parent>
@@ -9,15 +9,20 @@
   <name>Checkstyle Test</name>
   <build>
 
+    <!--This extension is installed by the IT prior to invoking this build. See ../checkstyle-assembly-->
     <extensions>
       <extension>
-        <groupId>org.apache.maven.its.it0111</groupId>
+        <groupId>org.apache.maven.its.itsample</groupId>
         <artifactId>checkstyle-assembly</artifactId>
         <version>1.0</version>
       </extension>
     </extensions>
 
-
+	<!-- Typically the tests will not rely on actual plugins and should be self-contained, in this case the problem was most
+	often experienced with Checkstyle so it makes it a valid test. Notice however that it is pinned to a known released version 
+	so the test won't randomly fail in the future if the plugin behavior changes.
+	
+	If the extension listed above isn't correctly installed on the plugin classpath, this invocation will fail to find the custom rule -->
     <plugins>
       <plugin>
         <groupId>org.apache.maven.plugins</groupId>
@@ -40,7 +45,6 @@
           </execution>
         </executions>
       </plugin>
-
     </plugins>
   </build>
 </project>

Modified: maven/core-integration-testing/trunk/maven-integration-test/src/test/resources/mng-xxxx-descriptionOfProblem/pom.xml
URL: http://svn.apache.org/viewvc/maven/core-integration-testing/trunk/maven-integration-test/src/test/resources/mng-xxxx-descriptionOfProblem/pom.xml?view=diff&rev=558915&r1=557106&r2=558915
==============================================================================
--- maven/core-integration-testing/trunk/maven-integration-test/src/test/resources/mng-xxxx-descriptionOfProblem/pom.xml (original)
+++ maven/core-integration-testing/trunk/maven-integration-test/src/test/resources/mng-xxxx-descriptionOfProblem/pom.xml Mon Jul 23 19:20:12 2007
@@ -1,6 +1,6 @@
 <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
   <modelVersion>4.0.0</modelVersion>
-  <groupId>org.apache.maven.its.it0111</groupId>
+  <groupId>org.apache.maven.its.itsample</groupId>
   <artifactId>parent</artifactId>
   <packaging>pom</packaging>
   <version>1</version>

Added: maven/core-integration-testing/trunk/maven-integration-test/src/test/resources/mng-xxxx-descriptionOfProblem/readme.txt
URL: http://svn.apache.org/viewvc/maven/core-integration-testing/trunk/maven-integration-test/src/test/resources/mng-xxxx-descriptionOfProblem/readme.txt?view=auto&rev=558915
==============================================================================
--- maven/core-integration-testing/trunk/maven-integration-test/src/test/resources/mng-xxxx-descriptionOfProblem/readme.txt (added)
+++ maven/core-integration-testing/trunk/maven-integration-test/src/test/resources/mng-xxxx-descriptionOfProblem/readme.txt Mon Jul 23 19:20:12 2007
@@ -0,0 +1,3 @@
+This is a sample IT based on a real one. This test first installs a jar containing some checkstyle rules. The second invocation uses that jar as an extension
+so that checkstyle finds the resources. If Maven behaves properly, the build succeeds, if not, the build fails. This is the simplest way to structure an IT when
+possible as it's cut and dry and is very easy to check with the verifier.
\ No newline at end of file