You are viewing a plain text version of this content. The canonical link for it is here.
Posted to surefire-commits@maven.apache.org by da...@apache.org on 2008/08/16 07:58:03 UTC

svn commit: r686454 - in /maven/surefire/trunk: ./ maven-surefire-plugin/src/main/java/org/apache/maven/plugin/surefire/ maven-surefire-plugin/src/site/apt/examples/ surefire-integration-tests/ surefire-integration-tests/src/test/java/org/apache/maven/...

Author: dantran
Date: Fri Aug 15 22:58:02 2008
New Revision: 686454

URL: http://svn.apache.org/viewvc?rev=686454&view=rev
Log:
- SUREFIRE-511: Replacement of 'systemProperties' to use Map interface.
- Add partial fix for SUREFIRE-513 to support SUREFIRE-511 ITs
- ignore eclipse workspace folder

Added:
    maven/surefire/trunk/surefire-integration-tests/src/test/java/org/apache/maven/surefire/its/AbstractSurefireIT.java
Modified:
    maven/surefire/trunk/   (props changed)
    maven/surefire/trunk/maven-surefire-plugin/src/main/java/org/apache/maven/plugin/surefire/SurefirePlugin.java
    maven/surefire/trunk/maven-surefire-plugin/src/site/apt/examples/system-properties.apt
    maven/surefire/trunk/surefire-integration-tests/pom.xml
    maven/surefire/trunk/surefire-integration-tests/src/test/java/org/apache/maven/surefire/its/AbstractTestCaseTest.java
    maven/surefire/trunk/surefire-integration-tests/src/test/java/org/apache/maven/surefire/its/SystemPropertiesTest.java
    maven/surefire/trunk/surefire-integration-tests/src/test/java/org/apache/maven/surefire/its/TestNgSuiteXmlTest.java
    maven/surefire/trunk/surefire-integration-tests/src/test/resources/system-properties/pom.xml
    maven/surefire/trunk/surefire-integration-tests/src/test/resources/system-properties/src/test/java/systemProperties/BasicTest.java
    maven/surefire/trunk/surefire-integration-tests/src/test/resources/testng-suite-xml/pom.xml

Propchange: maven/surefire/trunk/
------------------------------------------------------------------------------
--- svn:ignore (original)
+++ svn:ignore Fri Aug 15 22:58:02 2008
@@ -4,3 +4,4 @@
 *.iws
 .classpath
 .project
+.metadata

Modified: maven/surefire/trunk/maven-surefire-plugin/src/main/java/org/apache/maven/plugin/surefire/SurefirePlugin.java
URL: http://svn.apache.org/viewvc/maven/surefire/trunk/maven-surefire-plugin/src/main/java/org/apache/maven/plugin/surefire/SurefirePlugin.java?rev=686454&r1=686453&r2=686454&view=diff
==============================================================================
--- maven/surefire/trunk/maven-surefire-plugin/src/main/java/org/apache/maven/plugin/surefire/SurefirePlugin.java (original)
+++ maven/surefire/trunk/maven-surefire-plugin/src/main/java/org/apache/maven/plugin/surefire/SurefirePlugin.java Fri Aug 15 22:58:02 2008
@@ -222,12 +222,20 @@
 
     /**
      * List of System properties to pass to the JUnit tests.
-     * 
+     * @deprecated use systemPropertyVariables instead
      * @parameter
      */
     private Properties systemProperties;
 
     /**
+     * List of System properties to pass to the JUnit tests. 
+     * 
+     * @parameter
+     * @since 2.5
+     */
+    private Map systemPropertyVariables;
+    
+    /**
      * List of properties for configuring all TestNG related configurations. This is the new
      * preferred method of configuring TestNG.
      *
@@ -472,6 +480,11 @@
     private Properties originalSystemProperties;
 
     /**
+     * systemPropertyVariables + systemProperties
+     */
+    private Properties internalSystemProperties = new Properties();
+
+    /**
      * Flag to disable the generation of report files in xml format.
      * 
      * @parameter expression="${disableXmlReport}" default-value="false"
@@ -520,7 +533,6 @@
      * @readonly
      */
     private MavenSession session;
-    
 
     public void execute()
         throws MojoExecutionException, MojoFailureException
@@ -873,7 +885,7 @@
 
         if ( getLog().isDebugEnabled() )
         {
-            showMap( systemProperties, "system property" );
+            showMap( internalSystemProperties, "system property" );
         }
 
         if ( fork.isForking() )
@@ -882,7 +894,7 @@
             fork.setUseSystemClassLoader( useSystemClassLoader.booleanValue() );
             fork.setUseManifestOnlyJar( useManifestOnlyJar );
 
-            fork.setSystemProperties( systemProperties );
+            fork.setSystemProperties( internalSystemProperties );
             
             if ( "true".equals( debugForkedProcess ) )
             {
@@ -1012,9 +1024,29 @@
 
     protected void processSystemProperties( boolean setInSystem )
     {
-        if ( systemProperties == null )
+        if ( this.systemProperties != null )
         {
-            systemProperties = new Properties();
+            for ( Iterator i = systemProperties.keySet().iterator(); i.hasNext(); )
+            {
+                String key = (String) i.next();
+                String value = (String) systemProperties.get( key );
+                internalSystemProperties.setProperty( key, value );
+            }
+        }
+        
+        if ( this.systemPropertyVariables != null )
+        {
+            for ( Iterator i = systemPropertyVariables.keySet().iterator(); i.hasNext(); )
+            {
+                String key = (String) i.next();
+                String value = (String) systemPropertyVariables.get( key );
+                if ( value == null )
+                {
+                    this.getLog().error( key + "'s value cannot be null." );
+                }
+                internalSystemProperties.setProperty( key, value );
+            }
+            
         }
 
         originalSystemProperties = (Properties) System.getProperties().clone();
@@ -1026,24 +1058,24 @@
         
         // Get the properties from the MavenSession instance to make embedded use work correctly
         Properties userSpecifiedProperties = (Properties) session.getExecutionProperties().clone();
-        userSpecifiedProperties.putAll( systemProperties );
+        userSpecifiedProperties.putAll( internalSystemProperties );
         //systemProperties = userSpecifiedProperties;
 
-        systemProperties.setProperty( "basedir", basedir.getAbsolutePath() );
-        systemProperties.setProperty( "user.dir", workingDirectory.getAbsolutePath() );
+        internalSystemProperties.setProperty( "basedir", basedir.getAbsolutePath() );
+        internalSystemProperties.setProperty( "user.dir", workingDirectory.getAbsolutePath() );
 
-        systemProperties.setProperty( "localRepository", localRepository.getBasedir() );
+        internalSystemProperties.setProperty( "localRepository", localRepository.getBasedir() );
 
         if ( setInSystem )
         {
             // Add all system properties configured by the user
-            Iterator iter = systemProperties.keySet().iterator();
+            Iterator iter = internalSystemProperties.keySet().iterator();
 
             while ( iter.hasNext() )
             {
                 String key = (String) iter.next();
 
-                String value = systemProperties.getProperty( key );
+                String value = internalSystemProperties.getProperty( key );
 
                 System.setProperty( key, value );
             }

Modified: maven/surefire/trunk/maven-surefire-plugin/src/site/apt/examples/system-properties.apt
URL: http://svn.apache.org/viewvc/maven/surefire/trunk/maven-surefire-plugin/src/site/apt/examples/system-properties.apt?rev=686454&r1=686453&r2=686454&view=diff
==============================================================================
--- maven/surefire/trunk/maven-surefire-plugin/src/site/apt/examples/system-properties.apt (original)
+++ maven/surefire/trunk/maven-surefire-plugin/src/site/apt/examples/system-properties.apt Fri Aug 15 22:58:02 2008
@@ -2,13 +2,45 @@
   Using System Properties
   ------
   Allan Ramirez
+  Dan Tran
   ------
   July 2006
   ------
 
 Using System Properties
 
-  To add a system property, use the following configuration:
+  There are two ways to add a list of system properties to Surefire:
+
+* systemProperyVariable
+
+  This configuration is the replacement of the deprecated <systemProperies>.  It can accept any value
+  from Maven's properties that can be converted <<to String value>>
+
++---+
+<project>
+  [...]
+  <build>
+    <plugins>
+      <plugin>
+        <groupId>org.apache.maven.plugins</groupId>
+        <artifactId>maven-surefire-plugin</artifactId>
+        <version>2.4.2</version>
+        <configuration>
+          <systemPropertyVariables>
+            <propertyName>propertyValue</propertyName>
+            <buildDirectory>${project.build.directory}</buildDirectory>
+            [...]
+          </systemPropertyVariables>
+        </configuration>
+      </plugin>
+    </plugins>
+  </build>
+  [...]
+</project>
++---+
+
+
+* systemProperties ( deprecated ) 
 
 +---+
 <project>
@@ -25,6 +57,7 @@
               <name>propertyName</name>
               <value>propertyValue</value>
             </property>
+            [...]
           </systemProperties>
         </configuration>
       </plugin>

Modified: maven/surefire/trunk/surefire-integration-tests/pom.xml
URL: http://svn.apache.org/viewvc/maven/surefire/trunk/surefire-integration-tests/pom.xml?rev=686454&r1=686453&r2=686454&view=diff
==============================================================================
--- maven/surefire/trunk/surefire-integration-tests/pom.xml (original)
+++ maven/surefire/trunk/surefire-integration-tests/pom.xml Fri Aug 15 22:58:02 2008
@@ -32,6 +32,7 @@
     <plugins>
       <plugin>
         <artifactId>maven-surefire-plugin</artifactId>
+        <version>${project.version}</version>
         <configuration>
           <!-- DGF only include the "org" package; don't try to run the 
             tests of the projects under test directly -->
@@ -40,6 +41,13 @@
             <include>org/**/*Test.java</include>
             <include>org/**/*TestCase.java</include>
           </includes>
+          
+          <!-- Pass current surefire version to the main suite so that it -->
+          <!-- can forward to all integration test projects. SUREFIRE-513 -->
+          <systemPropertyVariables>
+            <surefire.version>${project.version}</surefire.version>
+          </systemPropertyVariables>
+          
         </configuration>
       </plugin>
     </plugins>

Added: maven/surefire/trunk/surefire-integration-tests/src/test/java/org/apache/maven/surefire/its/AbstractSurefireIT.java
URL: http://svn.apache.org/viewvc/maven/surefire/trunk/surefire-integration-tests/src/test/java/org/apache/maven/surefire/its/AbstractSurefireIT.java?rev=686454&view=auto
==============================================================================
--- maven/surefire/trunk/surefire-integration-tests/src/test/java/org/apache/maven/surefire/its/AbstractSurefireIT.java (added)
+++ maven/surefire/trunk/surefire-integration-tests/src/test/java/org/apache/maven/surefire/its/AbstractSurefireIT.java Fri Aug 15 22:58:02 2008
@@ -0,0 +1,26 @@
+package org.apache.maven.surefire.its;
+
+import java.util.ArrayList;
+
+import junit.framework.TestCase;
+
+
+/**
+ * Base class of all integration test cases. Mainly used to pickup surefire version
+ * from system property
+ * @author Dan T. Tran
+ *
+ */
+public abstract class AbstractSurefireIT
+    extends TestCase
+{
+    private String surefireVersion = System.getProperty( "surefire.version" );
+
+    protected ArrayList getInitialGoals()
+    {
+        ArrayList goals = new ArrayList();
+        goals.add( "-Dsurefire.version=" + surefireVersion );
+        return goals;
+    }
+
+}

Modified: maven/surefire/trunk/surefire-integration-tests/src/test/java/org/apache/maven/surefire/its/AbstractTestCaseTest.java
URL: http://svn.apache.org/viewvc/maven/surefire/trunk/surefire-integration-tests/src/test/java/org/apache/maven/surefire/its/AbstractTestCaseTest.java?rev=686454&r1=686453&r2=686454&view=diff
==============================================================================
--- maven/surefire/trunk/surefire-integration-tests/src/test/java/org/apache/maven/surefire/its/AbstractTestCaseTest.java (original)
+++ maven/surefire/trunk/surefire-integration-tests/src/test/java/org/apache/maven/surefire/its/AbstractTestCaseTest.java Fri Aug 15 22:58:02 2008
@@ -28,4 +28,5 @@
         
         HelperAssertions.assertTestSuiteResults( 1, 0, 0, 0, testDir );        
     }
+
 }

Modified: maven/surefire/trunk/surefire-integration-tests/src/test/java/org/apache/maven/surefire/its/SystemPropertiesTest.java
URL: http://svn.apache.org/viewvc/maven/surefire/trunk/surefire-integration-tests/src/test/java/org/apache/maven/surefire/its/SystemPropertiesTest.java?rev=686454&r1=686453&r2=686454&view=diff
==============================================================================
--- maven/surefire/trunk/surefire-integration-tests/src/test/java/org/apache/maven/surefire/its/SystemPropertiesTest.java (original)
+++ maven/surefire/trunk/surefire-integration-tests/src/test/java/org/apache/maven/surefire/its/SystemPropertiesTest.java Fri Aug 15 22:58:02 2008
@@ -1,21 +1,20 @@
 package org.apache.maven.surefire.its;
 
 
-import junit.framework.TestCase;
-import org.apache.maven.it.Verifier;
-import org.apache.maven.it.util.ResourceExtractor;
-
 import java.io.File;
 import java.util.ArrayList;
 
+import org.apache.maven.it.Verifier;
+import org.apache.maven.it.util.ResourceExtractor;
+
 /**
  * Test system properties
- * 
+ *
  * @author <a href="mailto:dfabulich@apache.org">Dan Fabulich</a>
- * 
+ *
  */
 public class SystemPropertiesTest
-    extends TestCase
+    extends AbstractSurefireIT
 {
     public void testSystemProperties ()
         throws Exception
@@ -23,24 +22,24 @@
         File testDir = ResourceExtractor.simpleExtractResources( getClass(), "/system-properties" );
 
         Verifier verifier = new Verifier( testDir.getAbsolutePath() );
-        ArrayList goals = new ArrayList();
+        ArrayList goals = getInitialGoals();
         goals.add( "test" );
         // SUREFIRE-121... someday we should re-enable this
         // goals.add( "-DsetOnMavenCommandLine=baz" );
         verifier.executeGoals( goals );
         verifier.verifyErrorFreeLog();
         verifier.resetStreams();
-        
-        HelperAssertions.assertTestSuiteResults( 2, 0, 0, 0, testDir );        
+
+        HelperAssertions.assertTestSuiteResults( 4, 0, 0, 0, testDir );
     }
-    
+
     public void testSystemPropertiesNoFork()
         throws Exception
     {
         File testDir = ResourceExtractor.simpleExtractResources( getClass(), "/system-properties" );
 
         Verifier verifier = new Verifier( testDir.getAbsolutePath() );
-        ArrayList goals = new ArrayList();
+        ArrayList goals = getInitialGoals();
         goals.add( "test" );
         goals.add( "-DforkMode=never" );
         // SUREFIRE-121... someday we should re-enable this
@@ -51,6 +50,6 @@
         verifier.verifyErrorFreeLog();
         verifier.resetStreams();
 
-        HelperAssertions.assertTestSuiteResults( 2, 0, 0, 0, testDir );
+        HelperAssertions.assertTestSuiteResults( 4, 0, 0, 0, testDir );
     }
 }

Modified: maven/surefire/trunk/surefire-integration-tests/src/test/java/org/apache/maven/surefire/its/TestNgSuiteXmlTest.java
URL: http://svn.apache.org/viewvc/maven/surefire/trunk/surefire-integration-tests/src/test/java/org/apache/maven/surefire/its/TestNgSuiteXmlTest.java?rev=686454&r1=686453&r2=686454&view=diff
==============================================================================
--- maven/surefire/trunk/surefire-integration-tests/src/test/java/org/apache/maven/surefire/its/TestNgSuiteXmlTest.java (original)
+++ maven/surefire/trunk/surefire-integration-tests/src/test/java/org/apache/maven/surefire/its/TestNgSuiteXmlTest.java Fri Aug 15 22:58:02 2008
@@ -16,7 +16,7 @@
  * 
  */
 public class TestNgSuiteXmlTest
-    extends TestCase
+    extends AbstractSurefireIT
 {
     public void testTestNgSuiteXml ()
         throws Exception
@@ -24,7 +24,9 @@
         File testDir = ResourceExtractor.simpleExtractResources( getClass(), "/testng-suite-xml" );
 
         Verifier verifier = new Verifier( testDir.getAbsolutePath() );
-        verifier.executeGoal( "test" );
+        List goals = getInitialGoals();
+        goals.add( "test" );
+        verifier.executeGoals( goals );
         verifier.verifyErrorFreeLog();
         verifier.resetStreams();
         
@@ -37,7 +39,8 @@
         File testDir = ResourceExtractor.simpleExtractResources( getClass(), "/testng-suite-xml" );
 
         Verifier verifier = new Verifier( testDir.getAbsolutePath() );
-        List goals = Arrays.asList( new String[] {"test", "-DforkMode=always"} );
+        List goals = getInitialGoals();
+        goals.addAll( Arrays.asList( new String[] {"test", "-DforkMode=always" } ) );
         verifier.executeGoals( goals );
         verifier.verifyErrorFreeLog();
         verifier.resetStreams();

Modified: maven/surefire/trunk/surefire-integration-tests/src/test/resources/system-properties/pom.xml
URL: http://svn.apache.org/viewvc/maven/surefire/trunk/surefire-integration-tests/src/test/resources/system-properties/pom.xml?rev=686454&r1=686453&r2=686454&view=diff
==============================================================================
--- maven/surefire/trunk/surefire-integration-tests/src/test/resources/system-properties/pom.xml (original)
+++ maven/surefire/trunk/surefire-integration-tests/src/test/resources/system-properties/pom.xml Fri Aug 15 22:58:02 2008
@@ -31,8 +31,30 @@
   <build>
     <plugins>
       <plugin>
+        <groupId>org.codehaus.mojo</groupId>
+        <artifactId>build-helper-maven-plugin</artifactId>
+        <version>1.2</version>
+        <executions>
+          <execution>
+            <phase>generate-sources</phase>
+            <goals>
+              <goal>reserve-network-port</goal>
+            </goals>
+            <configuration>
+              <portNames>
+                <portName>reservedPort1</portName>
+                <portName>reservedPort2</portName>
+                <portName>reservedPort3</portName>
+              </portNames>
+            </configuration>
+          </execution>
+        </executions>
+      </plugin>
+        
+      
+      <plugin>
         <artifactId>maven-surefire-plugin</artifactId>
-        <version>2.4</version>
+        <version>${surefire.version}</version>
         <configuration>
           <systemProperties>
             <property>
@@ -40,18 +62,18 @@
               <value>foo</value>
             </property>
           </systemProperties>
+          <systemPropertyVariables>
+            <buildDirectory>${project.build.directory}</buildDirectory>
+            <reservedPort1>${reservedPort1}</reservedPort1>
+            <reservedPort2>${reservedPort2}</reservedPort2>
+            <reservedPort3>${reservedPort3}</reservedPort3>
+          </systemPropertyVariables>
           <argLine>-DsetOnArgLine=bar</argLine>
         </configuration>
       </plugin>
     </plugins>
     
   </build>
-  <pluginRepositories>
-        <pluginRepository>
-          <id>dfabulich</id>
-          <url>http://people.apache.org/~dfabulich/staging-repo/</url>
-        </pluginRepository>
-    </pluginRepositories>
 
   <dependencies>
     <dependency>
@@ -61,5 +83,9 @@
       <scope>test</scope>
     </dependency>
   </dependencies>
+  
+  <properties>
+    <reservedPort3>1</reservedPort3>
+  </properties>
 
 </project>

Modified: maven/surefire/trunk/surefire-integration-tests/src/test/resources/system-properties/src/test/java/systemProperties/BasicTest.java
URL: http://svn.apache.org/viewvc/maven/surefire/trunk/surefire-integration-tests/src/test/resources/system-properties/src/test/java/systemProperties/BasicTest.java?rev=686454&r1=686453&r2=686454&view=diff
==============================================================================
--- maven/surefire/trunk/surefire-integration-tests/src/test/resources/system-properties/src/test/java/systemProperties/BasicTest.java (original)
+++ maven/surefire/trunk/surefire-integration-tests/src/test/resources/system-properties/src/test/java/systemProperties/BasicTest.java Fri Aug 15 22:58:02 2008
@@ -3,6 +3,7 @@
 import junit.framework.Test;
 import junit.framework.TestCase;
 import junit.framework.TestSuite;
+import java.io.File;
 
 public class BasicTest
     extends TestCase
@@ -19,6 +20,34 @@
         assertEquals("setOnArgLine property not set", "bar", System.getProperty("setOnArgLine"));
     }
 
+    
+    public void testSystemPropertyUsingMavenProjectProperties()
+    {
+        String actualBuildDirectory = new File( System.getProperty( "basedir" ),"target" ).getAbsolutePath();
+        
+        String buildDirectoryFromPom = new File( System.getProperty( "buildDirectory") ).getAbsolutePath();
+        
+        assertEquals( "Pom property not set.", actualBuildDirectory, buildDirectoryFromPom );
+    }
+    
+    public void testSystemPropertyGenerateByOtherPlugin()
+        throws Exception
+    {
+        int  reservedPort1 = Integer.parseInt( System.getProperty(  "reservedPort1" ) );
+        int  reservedPort2 = Integer.parseInt( System.getProperty(  "reservedPort2" ) );
+        int  reservedPort3 = Integer.parseInt( System.getProperty(  "reservedPort3" ) );
+        System.out.println( "reservedPort1: " + reservedPort1 );
+        System.out.println( "reservedPort2: " + reservedPort2 );
+        System.out.println( "reservedPort3: " + reservedPort3 );
+        
+        assertTrue( reservedPort1 != reservedPort2 );
+        
+        //plugin cannot overwrite the default value set in the pom, this is maven bug
+        assertEquals( 1, reservedPort3 );
+        
+    }
+    
+    
 // SUREFIRE-121; someday we should re-enable this    
 //    public void testSetOnMavenCommandLine()
 //    {

Modified: maven/surefire/trunk/surefire-integration-tests/src/test/resources/testng-suite-xml/pom.xml
URL: http://svn.apache.org/viewvc/maven/surefire/trunk/surefire-integration-tests/src/test/resources/testng-suite-xml/pom.xml?rev=686454&r1=686453&r2=686454&view=diff
==============================================================================
--- maven/surefire/trunk/surefire-integration-tests/src/test/resources/testng-suite-xml/pom.xml (original)
+++ maven/surefire/trunk/surefire-integration-tests/src/test/resources/testng-suite-xml/pom.xml Fri Aug 15 22:58:02 2008
@@ -29,7 +29,7 @@
   <name>TestNG Suite XML File</name>
 
   <properties>
-     <testNgVersion>5.7</testNgVersion>
+    <testNgVersion>5.7</testNgVersion>
   </properties>
 
   <dependencies>
@@ -47,6 +47,7 @@
       <plugin>
         <groupId>org.apache.maven.plugins</groupId>
         <artifactId>maven-surefire-plugin</artifactId>
+        <version>${surefire.version}</version>
         <configuration>
           <suiteXmlFiles>
             <file>src/test-data/testng.xml</file>
@@ -65,4 +66,5 @@
   </build>
 
 
+
 </project>