maven-surefire-commits mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From krosenv...@apache.org
Subject svn commit: r1039777 [3/3] - in /maven/surefire/trunk: maven-surefire-common/src/main/java/org/apache/maven/plugin/surefire/ maven-surefire-common/src/main/java/org/apache/maven/plugin/surefire/booterclient/ maven-surefire-common/src/test/java/org/apac...
Date Sat, 27 Nov 2010 22:41:25 GMT
Modified: maven/surefire/trunk/surefire-booter/src/main/java/org/apache/maven/surefire/booter/ForkedBooter.java
URL: http://svn.apache.org/viewvc/maven/surefire/trunk/surefire-booter/src/main/java/org/apache/maven/surefire/booter/ForkedBooter.java?rev=1039777&r1=1039776&r2=1039777&view=diff
==============================================================================
--- maven/surefire/trunk/surefire-booter/src/main/java/org/apache/maven/surefire/booter/ForkedBooter.java
(original)
+++ maven/surefire/trunk/surefire-booter/src/main/java/org/apache/maven/surefire/booter/ForkedBooter.java
Sat Nov 27 22:41:23 2010
@@ -72,7 +72,7 @@ public class ForkedBooter
             }
             else
             {
-                result = booter.runSuitesInProcess();
+                result = booter.runSuitesInProcess(p);
             }
 
             booterDeserializer.writePropertiesFile( surefirePropertiesFile, "surefire", p
);

Added: maven/surefire/trunk/surefire-booter/src/main/java/org/apache/maven/surefire/booter/ProviderFactory.java
URL: http://svn.apache.org/viewvc/maven/surefire/trunk/surefire-booter/src/main/java/org/apache/maven/surefire/booter/ProviderFactory.java?rev=1039777&view=auto
==============================================================================
--- maven/surefire/trunk/surefire-booter/src/main/java/org/apache/maven/surefire/booter/ProviderFactory.java
(added)
+++ maven/surefire/trunk/surefire-booter/src/main/java/org/apache/maven/surefire/booter/ProviderFactory.java
Sat Nov 27 22:41:23 2010
@@ -0,0 +1,78 @@
+package org.apache.maven.surefire.booter;
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License.  You may obtain a copy of the License at
+ *
+ *     http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied.  See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+
+import org.apache.maven.surefire.providerapi.DirectoryScannerParametersAware;
+import org.apache.maven.surefire.providerapi.ProviderConfiguration;
+
+/**
+ * @author Kristian Rosenvold
+ */
+public class ProviderFactory
+{
+    private final BooterConfiguration booterConfiguration;
+
+    private final ClassLoader surefireClassLoader;
+
+    private final Class directoryScannerParametersAware;
+
+    private final SurefireReflector surefireReflector;
+
+
+    public ProviderFactory( BooterConfiguration booterConfiguration, ClassLoader surefireClassLoader
)
+    {
+        this.booterConfiguration = booterConfiguration;
+        this.surefireClassLoader = surefireClassLoader;
+        this.surefireReflector = new SurefireReflector( surefireClassLoader );
+        try
+        {
+            directoryScannerParametersAware =
+                surefireClassLoader.loadClass( DirectoryScannerParametersAware.class.getName()
);
+        }
+        catch ( ClassNotFoundException e )
+        {
+            throw new RuntimeException( "When loading class", e );
+        }
+    }
+
+    public Object createProvider( ClassLoader testClassLoader )
+    {
+        ClassLoader context = java.lang.Thread.currentThread().getContextClassLoader();
+        Thread.currentThread().setContextClassLoader( surefireClassLoader );
+
+        ProviderConfiguration providerConfiguration = booterConfiguration.getProviderConfiguration();
+        final Object o = surefireReflector.newInstance( providerConfiguration );
+        surefireReflector.setIfDirScannerAware( o, booterConfiguration.getDirScannerParams()
);
+        surefireReflector.setTestSuiteDefinitionAware( o, booterConfiguration.getTestSuiteDefinition()
);
+        surefireReflector.setProviderPropertiesAware( o, booterConfiguration.getProviderProperties()
);
+        surefireReflector.setReporterConfigurationAware( o, booterConfiguration.getReporterConfiguration()
);
+        surefireReflector.setTestClassLoaderAware( o, testClassLoader );
+        surefireReflector.setTestArtifactInfoAware( o, booterConfiguration.getTestNg() );
+/*
+
+        if (o instanceof ReportingAware ){
+            ReporterManagerFactory reporterManagerFactory = new ReporterManagerFactory2(
booterConfiguration.getReports(),  surefireClassLoader, booterConfiguration.getReporterConfiguration());
+            ((ReportingAware)o).setReporterManagerFactory( reporterManagerFactory );
+        }
+
+        Thread.currentThread().setContextClassLoader( context );*/
+
+        return o;
+    }
+}

Propchange: maven/surefire/trunk/surefire-booter/src/main/java/org/apache/maven/surefire/booter/ProviderFactory.java
------------------------------------------------------------------------------
    svn:eol-style = native

Modified: maven/surefire/trunk/surefire-booter/src/main/java/org/apache/maven/surefire/booter/SurefireStarter.java
URL: http://svn.apache.org/viewvc/maven/surefire/trunk/surefire-booter/src/main/java/org/apache/maven/surefire/booter/SurefireStarter.java?rev=1039777&r1=1039776&r2=1039777&view=diff
==============================================================================
--- maven/surefire/trunk/surefire-booter/src/main/java/org/apache/maven/surefire/booter/SurefireStarter.java
(original)
+++ maven/surefire/trunk/surefire-booter/src/main/java/org/apache/maven/surefire/booter/SurefireStarter.java
Sat Nov 27 22:41:23 2010
@@ -23,7 +23,7 @@ import java.util.Properties;
 
 /**
  * Invokes surefire with the correct classloader setup.
- *
+ * <p/>
  * This part of the booter that is always guaranteed to be in the
  * same vm as the tests will be run in.
  *
@@ -44,11 +44,6 @@ public class SurefireStarter
     public int runSuitesInProcess( String testSet, Properties results )
         throws SurefireExecutionException
     {
-        if ( booterConfiguration.getTestSuites().size() != 1 )
-        {
-            throw new IllegalArgumentException( "Cannot only specify testSet for single test
suites" );
-        }
-
         // TODO: replace with plexus
 
         ClassLoader oldContextClassLoader = Thread.currentThread().getContextClassLoader();
@@ -63,9 +58,13 @@ public class SurefireStarter
             SurefireReflector reflector = new SurefireReflector( surefireClassLoader );
 
             Thread.currentThread().setContextClassLoader( testsClassLoader );
-            return reflector.run( booterConfiguration.getReports(),
-                                  (Object[]) booterConfiguration.getTestSuites().get( 0 ),
testSet, surefireClassLoader,
-                                  testsClassLoader, results, booterConfiguration.isFailIfNoTests()
);
+            return reflector.runProvider( booterConfiguration.getReporterConfiguration(),
+                                          booterConfiguration.getReports(), surefireClassLoader,
testsClassLoader,
+                                          results, booterConfiguration.isFailIfNoTests(),
+                                          booterConfiguration.getTestSuiteDefinition( testSet
),
+                                          booterConfiguration.getTestNg(),
+                                          booterConfiguration.getProviderConfiguration(),
+                                          booterConfiguration.getDirScannerParams() );
         }
         finally
         {
@@ -73,7 +72,7 @@ public class SurefireStarter
         }
     }
 
-    public int runSuitesInProcess()
+    public int runSuitesInProcess( Properties p )
         throws SurefireExecutionException
     {
         // TODO: replace with plexus
@@ -106,8 +105,12 @@ public class SurefireStarter
 
             Thread.currentThread().setContextClassLoader( testsClassLoader );
 
-            return reflector.run( booterConfiguration.getReports(), booterConfiguration.getTestSuites(),
-                                  surefireClassLoader, testsClassLoader, booterConfiguration.isFailIfNoTests()
);
+            return reflector.runProvider( booterConfiguration.getReporterConfiguration(),
+                                          booterConfiguration.getReports(), surefireClassLoader,
testsClassLoader, p,
+                                          booterConfiguration.isFailIfNoTests(),
+                                          booterConfiguration.getTestSuiteDefinition(), booterConfiguration.getTestNg(),
+                                          booterConfiguration.getProviderConfiguration(),
+                                          booterConfiguration.getDirScannerParams() );
 
         }
         finally

Added: maven/surefire/trunk/surefire-booter/src/test/java/org/apache/maven/surefire/booter/SurefireReflectorTest.java
URL: http://svn.apache.org/viewvc/maven/surefire/trunk/surefire-booter/src/test/java/org/apache/maven/surefire/booter/SurefireReflectorTest.java?rev=1039777&view=auto
==============================================================================
--- maven/surefire/trunk/surefire-booter/src/test/java/org/apache/maven/surefire/booter/SurefireReflectorTest.java
(added)
+++ maven/surefire/trunk/surefire-booter/src/test/java/org/apache/maven/surefire/booter/SurefireReflectorTest.java
Sat Nov 27 22:41:23 2010
@@ -0,0 +1,161 @@
+package org.apache.maven.surefire.booter;
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License.  You may obtain a copy of the License at
+ *
+ *     http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied.  See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+
+import junit.framework.TestCase;
+import org.apache.maven.surefire.providerapi.DirectoryScannerParametersAware;
+import org.apache.maven.surefire.providerapi.ProviderPropertiesAware;
+import org.apache.maven.surefire.providerapi.ReporterConfigurationAware;
+import org.apache.maven.surefire.providerapi.TestArtifactInfoAware;
+import org.apache.maven.surefire.providerapi.TestClassLoaderAware;
+import org.apache.maven.surefire.providerapi.TestSuiteDefinitionAware;
+import org.apache.maven.surefire.report.ReporterConfiguration;
+import org.apache.maven.surefire.suite.SuiteDefinition;
+import org.apache.maven.surefire.testset.DirectoryScannerParameters;
+import org.apache.maven.surefire.testset.TestArtifactInfo;
+import org.apache.maven.surefire.testset.TestSuiteDefinition;
+
+import java.io.File;
+import java.util.ArrayList;
+import java.util.Properties;
+
+/**
+ * @author Kristian Rosenvold
+ */
+public class SurefireReflectorTest
+    extends TestCase
+{
+    public void testSetDirectoryScannerParameters()
+        throws Exception
+    {
+        SurefireReflector surefireReflector = getReflector();
+        Foo foo = new Foo();
+
+        DirectoryScannerParameters directoryScannerParameters =
+            new DirectoryScannerParameters( new File( "ABC" ), new ArrayList(), new ArrayList(),
Boolean.FALSE );
+        assertTrue( surefireReflector.isDirectoryScannerParameterAware( foo ) );
+        surefireReflector.setDirectoryScannerParameters( foo, directoryScannerParameters
);
+
+    }
+
+    public void testTestSuiteDefinition()
+        throws Exception
+    {
+        SurefireReflector surefireReflector = getReflector();
+        Foo foo = new Foo();
+
+        TestSuiteDefinition testSuiteDefinition =
+            new TestSuiteDefinition( new File[]{ new File( "file1" ), new File( "file2" )
}, "aForkTest",
+                                     new File( "TestSOurce" ), "aUserRequestedTest" );
+        assertTrue( surefireReflector.isTestSuiteDefinitionAware( foo ) );
+        surefireReflector.setTestSuiteDefinition( foo, testSuiteDefinition );
+    }
+
+    public void testProviderProperties()
+        throws Exception
+    {
+        SurefireReflector surefireReflector = getReflector();
+        Foo foo = new Foo();
+
+        assertTrue( surefireReflector.isProviderPropertiesAware( foo ) );
+        surefireReflector.setProviderProperties( foo, new Properties() );
+    }
+
+    public void testReporterConfiguration()
+        throws Exception
+    {
+        SurefireReflector surefireReflector = getReflector();
+        Foo foo = new Foo();
+
+        ReporterConfiguration reporterConfiguration = new ReporterConfiguration( new File(
"CDE" ), Boolean.TRUE );
+        assertTrue( surefireReflector.isReporterConfigurationAwareAware( foo ) );
+        surefireReflector.setReporterConfigurationAware( foo, reporterConfiguration );
+    }
+
+    public void testTestClassLoaderAware()
+        throws Exception
+    {
+        SurefireReflector surefireReflector = getReflector();
+        Foo foo = new Foo();
+
+        ReporterConfiguration reporterConfiguration = new ReporterConfiguration( new File(
"CDE" ), Boolean.TRUE );
+        assertTrue( surefireReflector.isTestClassLoaderAware( foo ) );
+        surefireReflector.setTestClassLoader( foo, getClass().getClassLoader() );
+    }
+
+    public void testArtifactInfoAware()
+        throws Exception
+    {
+        SurefireReflector surefireReflector = getReflector();
+        Foo foo = new Foo();
+
+        TestArtifactInfo testArtifactInfo = new TestArtifactInfo( "12.3", "test" );
+        assertTrue( surefireReflector.isTestArtifactInfoAware( foo ) );
+        surefireReflector.setTestArtifactInfo( foo, testArtifactInfo );
+    }
+
+    private SurefireReflector getReflector()
+    {
+        return new SurefireReflector( this.getClass().getClassLoader() );
+    }
+
+
+    class Foo
+        implements DirectoryScannerParametersAware, TestSuiteDefinitionAware, ProviderPropertiesAware,
+        ReporterConfigurationAware, TestClassLoaderAware, TestArtifactInfoAware
+    {
+        DirectoryScannerParameters directoryScannerParameters;
+
+        TestSuiteDefinition testSuiteDefinition;
+
+        Properties providerProperties;
+
+        ReporterConfiguration reporterConfiguration;
+
+        public void setDirectoryScannerParameters( DirectoryScannerParameters directoryScanner
)
+        {
+            this.directoryScannerParameters = directoryScanner;
+        }
+
+
+        public void setTestSuiteDefinition( TestSuiteDefinition testSuiteDefinition )
+        {
+            this.testSuiteDefinition = testSuiteDefinition;
+        }
+
+        public void setProviderProperties( Properties providerProperties )
+        {
+            this.providerProperties = providerProperties;
+        }
+
+        public void setReporterConfiguration( ReporterConfiguration reporterConfiguration
)
+        {
+            reporterConfiguration = reporterConfiguration;
+        }
+
+        public void setTestClassLoader( ClassLoader classLoader )
+        {
+        }
+
+        public void setTestArtifactInfo( TestArtifactInfo testArtifactInfo )
+        {
+            //To change body of implemented methods use File | Settings | File Templates.
+        }
+    }
+}

Propchange: maven/surefire/trunk/surefire-booter/src/test/java/org/apache/maven/surefire/booter/SurefireReflectorTest.java
------------------------------------------------------------------------------
    svn:eol-style = native

Added: maven/surefire/trunk/surefire-providers/surefire-junit/src/main/java/org/apache/maven/surefire/junit/JUnit3Provider.java
URL: http://svn.apache.org/viewvc/maven/surefire/trunk/surefire-providers/surefire-junit/src/main/java/org/apache/maven/surefire/junit/JUnit3Provider.java?rev=1039777&view=auto
==============================================================================
--- maven/surefire/trunk/surefire-providers/surefire-junit/src/main/java/org/apache/maven/surefire/junit/JUnit3Provider.java
(added)
+++ maven/surefire/trunk/surefire-providers/surefire-junit/src/main/java/org/apache/maven/surefire/junit/JUnit3Provider.java
Sat Nov 27 22:41:23 2010
@@ -0,0 +1,72 @@
+package org.apache.maven.surefire.junit;
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License.  You may obtain a copy of the License at
+ *
+ *     http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied.  See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+
+import org.apache.maven.surefire.providerapi.FileScanningProvider;
+import org.apache.maven.surefire.providerapi.SurefireProvider;
+import org.apache.maven.surefire.report.ReporterException;
+import org.apache.maven.surefire.suite.RunResult;
+import org.apache.maven.surefire.testset.TestSetFailedException;
+
+import java.util.Iterator;
+
+/**
+ * @author Kristian Rosenvold
+ * @noinspection UnusedDeclaration
+ */
+public class JUnit3Provider
+    extends FileScanningProvider
+    implements SurefireProvider
+{
+
+    public RunResult invoke()
+        throws TestSetFailedException, ReporterException
+    {
+        JUnitDirectoryTestSuite suite = getSuite();
+        suite.locateTestSets( getTestsClassLoader() );
+        if ( getTestSuiteDefinition().getTestForFork() != null )
+        {
+            suite.execute( getTestSuiteDefinition().getTestForFork(), getReporterManagerFactory(),
+                           getTestsClassLoader() );
+        }
+        else
+        {
+            suite.execute( getReporterManagerFactory(), getTestsClassLoader() );
+        }
+        return RunResult.totalCountOnly( suite.getNumTests() );
+    }
+
+    private JUnitDirectoryTestSuite getSuite()
+    {
+        return new JUnitDirectoryTestSuite( getDirectoryScanner() );
+
+    }
+
+    public Iterator getSuites()
+    {
+        try
+        {
+            return getSuite().locateTestSets( getTestsClassLoader() ).keySet().iterator();
+        }
+        catch ( TestSetFailedException e )
+        {
+            throw new RuntimeException( e );
+        }
+    }
+}

Propchange: maven/surefire/trunk/surefire-providers/surefire-junit/src/main/java/org/apache/maven/surefire/junit/JUnit3Provider.java
------------------------------------------------------------------------------
    svn:eol-style = native

Modified: maven/surefire/trunk/surefire-providers/surefire-junit/src/main/java/org/apache/maven/surefire/junit/JUnitDirectoryTestSuite.java
URL: http://svn.apache.org/viewvc/maven/surefire/trunk/surefire-providers/surefire-junit/src/main/java/org/apache/maven/surefire/junit/JUnitDirectoryTestSuite.java?rev=1039777&r1=1039776&r2=1039777&view=diff
==============================================================================
--- maven/surefire/trunk/surefire-providers/surefire-junit/src/main/java/org/apache/maven/surefire/junit/JUnitDirectoryTestSuite.java
(original)
+++ maven/surefire/trunk/surefire-providers/surefire-junit/src/main/java/org/apache/maven/surefire/junit/JUnitDirectoryTestSuite.java
Sat Nov 27 22:41:23 2010
@@ -24,6 +24,7 @@ import org.apache.maven.surefire.suite.A
 import org.apache.maven.surefire.testset.PojoTestSet;
 import org.apache.maven.surefire.testset.SurefireTestSet;
 import org.apache.maven.surefire.testset.TestSetFailedException;
+import org.apache.maven.surefire.util.DirectoryScanner;
 
 import java.io.File;
 import java.util.ArrayList;
@@ -36,6 +37,11 @@ import java.util.ArrayList;
 public class JUnitDirectoryTestSuite
     extends AbstractDirectoryTestSuite
 {
+    public JUnitDirectoryTestSuite( DirectoryScanner surefireDirectoryScanner )
+    {
+        super( surefireDirectoryScanner );
+    }
+
     public JUnitDirectoryTestSuite( File basedir, ArrayList includes, ArrayList excludes
)
     {
         super( basedir, includes, excludes );

Modified: maven/surefire/trunk/surefire-providers/surefire-junit4/src/main/java/org/apache/maven/surefire/junit4/JUnit4DirectoryTestSuite.java
URL: http://svn.apache.org/viewvc/maven/surefire/trunk/surefire-providers/surefire-junit4/src/main/java/org/apache/maven/surefire/junit4/JUnit4DirectoryTestSuite.java?rev=1039777&r1=1039776&r2=1039777&view=diff
==============================================================================
--- maven/surefire/trunk/surefire-providers/surefire-junit4/src/main/java/org/apache/maven/surefire/junit4/JUnit4DirectoryTestSuite.java
(original)
+++ maven/surefire/trunk/surefire-providers/surefire-junit4/src/main/java/org/apache/maven/surefire/junit4/JUnit4DirectoryTestSuite.java
Sat Nov 27 22:41:23 2010
@@ -22,6 +22,7 @@ package org.apache.maven.surefire.junit4
 import org.apache.maven.surefire.suite.AbstractDirectoryTestSuite;
 import org.apache.maven.surefire.testset.SurefireTestSet;
 import org.apache.maven.surefire.testset.TestSetFailedException;
+import org.apache.maven.surefire.util.DirectoryScanner;
 
 import java.io.File;
 import java.util.ArrayList;
@@ -36,11 +37,18 @@ import java.util.ArrayList;
 public class JUnit4DirectoryTestSuite
     extends AbstractDirectoryTestSuite
 {
+    // Remove when we no longer build with surefire 2.5
     public JUnit4DirectoryTestSuite( File basedir, ArrayList includes, ArrayList excludes
)
     {
         super( basedir, includes, excludes );
     }
 
+    public JUnit4DirectoryTestSuite( DirectoryScanner surefireDirectoryScanner )
+    {
+        super( surefireDirectoryScanner );
+    }
+
+
     /**
      * This method will be called for each class to be run as a test. It returns
      * a surefire test set that will later be executed.

Added: maven/surefire/trunk/surefire-providers/surefire-junit4/src/main/java/org/apache/maven/surefire/junit4/JUnit4Provider.java
URL: http://svn.apache.org/viewvc/maven/surefire/trunk/surefire-providers/surefire-junit4/src/main/java/org/apache/maven/surefire/junit4/JUnit4Provider.java?rev=1039777&view=auto
==============================================================================
--- maven/surefire/trunk/surefire-providers/surefire-junit4/src/main/java/org/apache/maven/surefire/junit4/JUnit4Provider.java
(added)
+++ maven/surefire/trunk/surefire-providers/surefire-junit4/src/main/java/org/apache/maven/surefire/junit4/JUnit4Provider.java
Sat Nov 27 22:41:23 2010
@@ -0,0 +1,119 @@
+package org.apache.maven.surefire.junit4;
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License.  You may obtain a copy of the License at
+ *
+ *     http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied.  See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+
+import org.apache.maven.surefire.providerapi.FileScanningProvider;
+import org.apache.maven.surefire.providerapi.ProviderPropertiesAware;
+import org.apache.maven.surefire.providerapi.SurefireProvider;
+import org.apache.maven.surefire.providerapi.TestSuiteDefinitionAware;
+import org.apache.maven.surefire.report.ReporterException;
+import org.apache.maven.surefire.suite.RunResult;
+import org.apache.maven.surefire.testset.TestSetFailedException;
+import org.apache.maven.surefire.testset.TestSuiteDefinition;
+
+import java.util.Iterator;
+import java.util.Properties;
+
+/**
+ * @author Kristian Rosenvold
+ */
+@SuppressWarnings( { "UnusedDeclaration" } )
+public class JUnit4Provider
+    extends FileScanningProvider
+    implements SurefireProvider, ProviderPropertiesAware, TestSuiteDefinitionAware
+{
+
+    private Properties providerProperties;
+
+    private TestSuiteDefinition testSuiteDefinition;
+
+
+    @SuppressWarnings( { "UnnecessaryUnboxing" } )
+    public RunResult invoke()
+        throws TestSetFailedException, ReporterException
+    {
+        JUnit4DirectoryTestSuite suite = getSuite();
+        suite.locateTestSets( getTestsClassLoader() );
+        if ( testSuiteDefinition.getTestForFork() != null )
+        {
+            suite.execute( testSuiteDefinition.getTestForFork(), getReporterManagerFactory(),
getTestsClassLoader() );
+        }
+        else
+        {
+            suite.execute( getReporterManagerFactory(), getTestsClassLoader() );
+        }
+        return RunResult.totalCountOnly( suite.getNumTests() );
+    }
+
+    private JUnit4DirectoryTestSuite getSuite()
+    {
+        return new JUnit4DirectoryTestSuite( getDirectoryScanner() );
+
+    }
+
+    public Iterator getSuites()
+    {
+        try
+        {
+            return getSuite().locateTestSets( getTestsClassLoader() ).keySet().iterator();
+        }
+        catch ( TestSetFailedException e )
+        {
+            throw new RuntimeException( e );
+        }
+    }
+
+
+    public void setProviderProperties( Properties providerProperties )
+    {
+        this.providerProperties = providerProperties;
+    }
+
+    public void setTestSuiteDefinition( TestSuiteDefinition testSuiteDefinition )
+    {
+        this.testSuiteDefinition = testSuiteDefinition;
+    }
+
+
+    private void upgradeCheck( JUnit4DirectoryTestSuite suite )
+        throws TestSetFailedException
+    {
+        if ( isJunit4UpgradeCheck() && suite.getClassesSkippedByValidation().size()
> 0 )
+        {
+            StringBuilder reason = new StringBuilder();
+            reason.append( "Updated check failed\n" );
+            reason.append( "There are tests that would be run with junit4 / surefire 2.6
but not with [2.7,):\n" );
+            for ( Object o : suite.getClassesSkippedByValidation() )
+            {
+                Class testClass = (Class) o;
+                reason.append( "   " );
+                reason.append( testClass.getCanonicalName() );
+                reason.append( "\n" );
+            }
+            throw new TestSetFailedException( reason.toString() );
+        }
+    }
+
+    private boolean isJunit4UpgradeCheck()
+    {
+        final String property = System.getProperty( "surefire.junit4.upgradecheck" );
+        return property != null;
+    }
+
+}

Propchange: maven/surefire/trunk/surefire-providers/surefire-junit4/src/main/java/org/apache/maven/surefire/junit4/JUnit4Provider.java
------------------------------------------------------------------------------
    svn:eol-style = native

Modified: maven/surefire/trunk/surefire-providers/surefire-junit47/src/main/java/org/apache/maven/surefire/junitcore/JUnitCoreDirectoryTestSuite.java
URL: http://svn.apache.org/viewvc/maven/surefire/trunk/surefire-providers/surefire-junit47/src/main/java/org/apache/maven/surefire/junitcore/JUnitCoreDirectoryTestSuite.java?rev=1039777&r1=1039776&r2=1039777&view=diff
==============================================================================
--- maven/surefire/trunk/surefire-providers/surefire-junit47/src/main/java/org/apache/maven/surefire/junitcore/JUnitCoreDirectoryTestSuite.java
(original)
+++ maven/surefire/trunk/surefire-providers/surefire-junit47/src/main/java/org/apache/maven/surefire/junitcore/JUnitCoreDirectoryTestSuite.java
Sat Nov 27 22:41:23 2010
@@ -51,6 +51,8 @@ public class JUnitCoreDirectoryTestSuite
 
     private final JUnitCoreParameters jUnitCoreParameters;
 
+    private ReporterManagerFactory reporterManagerFactory;
+
 
     public JUnitCoreDirectoryTestSuite( File basedir, ArrayList includes, ArrayList excludes,
Properties properties )
     {
@@ -58,6 +60,12 @@ public class JUnitCoreDirectoryTestSuite
         this.jUnitCoreParameters = new JUnitCoreParameters( properties );
     }
 
+    public JUnitCoreDirectoryTestSuite( DirectoryScanner directoryScanner, JUnitCoreParameters
jUnitCoreParameters, ReporterManagerFactory reporterManagerFactory )
+    {
+        this.directoryScanner = directoryScanner;
+        this.jUnitCoreParameters = jUnitCoreParameters;
+        this.reporterManagerFactory = reporterManagerFactory;
+    }
 
     public void execute( ReporterManagerFactory reporterManagerFactory, ClassLoader classLoader
)
         throws ReporterException, TestSetFailedException
@@ -79,6 +87,7 @@ public class JUnitCoreDirectoryTestSuite
     public void execute( String testSetName, ReporterManagerFactory reporterManagerFactory,
ClassLoader classLoader )
         throws ReporterException, TestSetFailedException
     {
+        this.reporterManagerFactory = reporterManagerFactory;
         if ( testsToRun == null )
         {
             throw new IllegalStateException( "You must call locateTestSets before calling
execute" );
@@ -89,7 +98,7 @@ public class JUnitCoreDirectoryTestSuite
         {
             throw new TestSetFailedException( "Unable to find test set '" + testSetName +
"' in suite" );
         }
-        testSet.execute( reporterManagerFactory, jUnitCoreParameters );
+        testSet.execute( this.reporterManagerFactory, jUnitCoreParameters );
     }
 
     public Map locateTestSets( ClassLoader classLoader )
@@ -105,6 +114,18 @@ public class JUnitCoreDirectoryTestSuite
         return testsToRun.getTestSets();
     }
 
+    public Map locateTestSetsImpl( ClassLoader classLoader )
+    {
+        if ( testSets != null )
+        {
+            throw new IllegalStateException( "You can't call locateTestSets twice" );
+        }
+
+        Class[] locatedClasses = directoryScanner.locateTestClasses( classLoader, new NonAbstractClassScannerFilter()
);
+        testsToRun = new TestsToRun( locatedClasses );
+        return testsToRun.getTestSets();
+    }
+
     public int getNumTests()
     {
         if ( testsToRun == null )

Added: maven/surefire/trunk/surefire-providers/surefire-junit47/src/main/java/org/apache/maven/surefire/junitcore/JUnitCoreProvider.java
URL: http://svn.apache.org/viewvc/maven/surefire/trunk/surefire-providers/surefire-junit47/src/main/java/org/apache/maven/surefire/junitcore/JUnitCoreProvider.java?rev=1039777&view=auto
==============================================================================
--- maven/surefire/trunk/surefire-providers/surefire-junit47/src/main/java/org/apache/maven/surefire/junitcore/JUnitCoreProvider.java
(added)
+++ maven/surefire/trunk/surefire-providers/surefire-junit47/src/main/java/org/apache/maven/surefire/junitcore/JUnitCoreProvider.java
Sat Nov 27 22:41:23 2010
@@ -0,0 +1,100 @@
+package org.apache.maven.surefire.junitcore;
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License.  You may obtain a copy of the License at
+ *
+ *     http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied.  See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+
+import org.apache.maven.surefire.providerapi.FileScanningProvider;
+import org.apache.maven.surefire.providerapi.ProviderPropertiesAware;
+import org.apache.maven.surefire.providerapi.SurefireProvider;
+import org.apache.maven.surefire.report.ReporterException;
+import org.apache.maven.surefire.report.RunStatistics;
+import org.apache.maven.surefire.suite.RunResult;
+import org.apache.maven.surefire.testset.TestSetFailedException;
+
+import java.util.Iterator;
+import java.util.Properties;
+
+/**
+ * @author Kristian Rosenvold
+ */
+@SuppressWarnings( { "UnusedDeclaration" } )
+public class JUnitCoreProvider
+    extends FileScanningProvider
+    implements SurefireProvider, ProviderPropertiesAware
+{
+    private Properties providerProperties;
+
+
+    @SuppressWarnings( { "UnnecessaryUnboxing" } )
+    public RunResult invoke()
+        throws TestSetFailedException, ReporterException
+    {
+        // Todo; Not there quite yet
+        JUnitCoreDirectoryTestSuite jUnitCoreDirectoryTestSuite = getSuite();
+
+        RunStatistics runStatistics = getReporterManagerFactory().getGlobalRunStatistics();
+
+        jUnitCoreDirectoryTestSuite.locateTestSets( getTestsClassLoader() );
+        int totalTests = 0;
+
+        int testCount = jUnitCoreDirectoryTestSuite.getNumTests();
+        if ( testCount > 0 )
+        {
+            totalTests += testCount;
+        }
+
+        if ( totalTests == 0 && getFailifNoTests().booleanValue() )
+        {
+            getReporterManagerFactory().createReporterManager().writeMessage( "There are
no tests to run." );
+            return RunResult.No_Tests;
+        }
+
+        // getLog().info( "Concurrency config is " + getProperties().toString() );
+
+        if ( getTestSuiteDefinition().getTestForFork() != null )
+        {
+            jUnitCoreDirectoryTestSuite.execute( getTestSuiteDefinition().getTestForFork(),
getReporterManagerFactory(),
+                                                 getTestsClassLoader() );
+        }
+        else
+        {
+            jUnitCoreDirectoryTestSuite.execute( getReporterManagerFactory(), getTestsClassLoader()
);
+        }
+
+        jUnitCoreDirectoryTestSuite.execute( getReporterManagerFactory(), getTestsClassLoader()
);
+
+        return runStatistics.getRunResult();
+    }
+
+    private JUnitCoreDirectoryTestSuite getSuite()
+    {
+        return new JUnitCoreDirectoryTestSuite( getDirectoryScanner(), new JUnitCoreParameters(
providerProperties ),
+                                                getReporterManagerFactory() );
+    }
+
+    public Iterator getSuites()
+    {
+        return getSuite().locateTestSetsImpl( getTestsClassLoader() ).entrySet().iterator();
+    }
+
+
+    public void setProviderProperties( Properties providerProperties )
+    {
+        this.providerProperties = providerProperties;
+    }
+}

Propchange: maven/surefire/trunk/surefire-providers/surefire-junit47/src/main/java/org/apache/maven/surefire/junitcore/JUnitCoreProvider.java
------------------------------------------------------------------------------
    svn:eol-style = native

Modified: maven/surefire/trunk/surefire-providers/surefire-junit47/src/main/java/org/apache/maven/surefire/junitcore/TestsToRun.java
URL: http://svn.apache.org/viewvc/maven/surefire/trunk/surefire-providers/surefire-junit47/src/main/java/org/apache/maven/surefire/junitcore/TestsToRun.java?rev=1039777&r1=1039776&r2=1039777&view=diff
==============================================================================
--- maven/surefire/trunk/surefire-providers/surefire-junit47/src/main/java/org/apache/maven/surefire/junitcore/TestsToRun.java
(original)
+++ maven/surefire/trunk/surefire-providers/surefire-junit47/src/main/java/org/apache/maven/surefire/junitcore/TestsToRun.java
Sat Nov 27 22:41:23 2010
@@ -39,7 +39,6 @@ class TestsToRun
     Map<String, JUnitCoreTestSet> testSets;
 
     public TestsToRun( Class... locatedClasses )
-        throws TestSetFailedException
     {
         this.locatedClasses = locatedClasses;
         testSets = new HashMap<String, JUnitCoreTestSet>();
@@ -50,7 +49,7 @@ class TestsToRun
 
             if ( testSets.containsKey( testSet.getName() ) )
             {
-                throw new TestSetFailedException( "Duplicate test set '" + testSet.getName()
+ "'" );
+                throw new RuntimeException( "Duplicate test set '" + testSet.getName() +
"'" );
             }
             testSets.put( testSet.getName(), testSet );
             testCount++;

Modified: maven/surefire/trunk/surefire-providers/surefire-junit47/src/test/java/org/apache/maven/surefire/junitcore/ConcurrentReportingRunListenerTest.java
URL: http://svn.apache.org/viewvc/maven/surefire/trunk/surefire-providers/surefire-junit47/src/test/java/org/apache/maven/surefire/junitcore/ConcurrentReportingRunListenerTest.java?rev=1039777&r1=1039776&r2=1039777&view=diff
==============================================================================
--- maven/surefire/trunk/surefire-providers/surefire-junit47/src/test/java/org/apache/maven/surefire/junitcore/ConcurrentReportingRunListenerTest.java
(original)
+++ maven/surefire/trunk/surefire-providers/surefire-junit47/src/test/java/org/apache/maven/surefire/junitcore/ConcurrentReportingRunListenerTest.java
Sat Nov 27 22:41:23 2010
@@ -23,6 +23,7 @@ package org.apache.maven.surefire.junitc
 import junit.framework.Assert;
 import junit.framework.TestCase;
 import junit.framework.TestSuite;
+import org.apache.maven.surefire.report.ReporterConfiguration;
 import org.apache.maven.surefire.report.ReporterManagerFactory;
 import org.apache.maven.surefire.report.RunStatistics;
 import org.apache.maven.surefire.testset.TestSetFailedException;
@@ -32,6 +33,7 @@ import org.junit.runner.Computer;
 import org.junit.runner.JUnitCore;
 
 import java.io.ByteArrayOutputStream;
+import java.io.File;
 import java.io.PrintStream;
 import java.util.ArrayList;
 import java.util.List;
@@ -399,6 +401,7 @@ public class ConcurrentReportingRunListe
         Object[] reporter = new Object[]{MockReporter.class.getCanonicalName(), new Object[]
{} };
         final List<Object> objects = new ArrayList();
         objects.add( reporter );
+        ReporterConfiguration reporterConfiguration = new ReporterConfiguration( new File(
"." ), Boolean.TRUE);
         return new ReporterManagerFactory(objects, this.getClass().getClassLoader());
     }
 

Modified: maven/surefire/trunk/surefire-providers/surefire-junit47/src/test/java/org/apache/maven/surefire/junitcore/MavenSurefireJUnit47RunnerTestCase.java
URL: http://svn.apache.org/viewvc/maven/surefire/trunk/surefire-providers/surefire-junit47/src/test/java/org/apache/maven/surefire/junitcore/MavenSurefireJUnit47RunnerTestCase.java?rev=1039777&r1=1039776&r2=1039777&view=diff
==============================================================================
--- maven/surefire/trunk/surefire-providers/surefire-junit47/src/test/java/org/apache/maven/surefire/junitcore/MavenSurefireJUnit47RunnerTestCase.java
(original)
+++ maven/surefire/trunk/surefire-providers/surefire-junit47/src/test/java/org/apache/maven/surefire/junitcore/MavenSurefireJUnit47RunnerTestCase.java
Sat Nov 27 22:41:23 2010
@@ -18,6 +18,7 @@ package org.apache.maven.surefire.junitc
 
 import junit.framework.Assert;
 import org.apache.maven.surefire.report.ConsoleReporter;
+import org.apache.maven.surefire.report.ReporterConfiguration;
 import org.apache.maven.surefire.report.ReporterManagerFactory;
 import org.junit.BeforeClass;
 import org.junit.Test;
@@ -26,6 +27,7 @@ import org.junit.runner.JUnitCore;
 import org.junit.runner.Result;
 import org.junit.runner.notification.Failure;
 
+import java.io.File;
 import java.util.ArrayList;
 import java.util.List;
 
@@ -119,6 +121,8 @@ public class MavenSurefireJUnit47RunnerT
       List reportDefinitions = new ArrayList();
       reportDefinitions.add(reportDefinition);
 
+      ReporterConfiguration reporterConfiguration = new ReporterConfiguration( new File(
"." ), Boolean.TRUE );
+
       ReporterManagerFactory reporterManagerFactory = new ReporterManagerFactory(reportDefinitions,
this.getClass().getClassLoader());
 
       ConcurrentReportingRunListener concurrentReportingRunListener = ConcurrentReportingRunListener.createInstance(

Added: maven/surefire/trunk/surefire-providers/surefire-testng/src/main/java/org/apache/maven/surefire/testng/TestNGProvider.java
URL: http://svn.apache.org/viewvc/maven/surefire/trunk/surefire-providers/surefire-testng/src/main/java/org/apache/maven/surefire/testng/TestNGProvider.java?rev=1039777&view=auto
==============================================================================
--- maven/surefire/trunk/surefire-providers/surefire-testng/src/main/java/org/apache/maven/surefire/testng/TestNGProvider.java
(added)
+++ maven/surefire/trunk/surefire-providers/surefire-testng/src/main/java/org/apache/maven/surefire/testng/TestNGProvider.java
Sat Nov 27 22:41:23 2010
@@ -0,0 +1,137 @@
+package org.apache.maven.surefire.testng;
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License.  You may obtain a copy of the License at
+ *
+ *     http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied.  See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+
+import org.apache.maven.surefire.providerapi.FileScanningProvider;
+import org.apache.maven.surefire.providerapi.ProviderPropertiesAware;
+import org.apache.maven.surefire.providerapi.ReporterConfigurationAware;
+import org.apache.maven.surefire.providerapi.SurefireProvider;
+import org.apache.maven.surefire.providerapi.TestArtifactInfoAware;
+import org.apache.maven.surefire.report.ReporterConfiguration;
+import org.apache.maven.surefire.report.ReporterException;
+import org.apache.maven.surefire.suite.RunResult;
+import org.apache.maven.surefire.suite.SurefireTestSuite;
+import org.apache.maven.surefire.testset.TestArtifactInfo;
+import org.apache.maven.surefire.testset.TestSetFailedException;
+import org.apache.maven.surefire.testset.TestSuiteDefinition;
+import org.apache.maven.surefire.util.DefaultDirectoryScanner;
+
+import java.util.ArrayList;
+import java.util.Iterator;
+import java.util.Properties;
+
+/**
+ * @author Kristian Rosenvold
+ * @noinspection UnusedDeclaration
+ */
+public class TestNGProvider
+    extends FileScanningProvider
+    implements SurefireProvider, ProviderPropertiesAware, TestArtifactInfoAware, ReporterConfigurationAware
+{
+    private Properties providerProperties;
+
+    private TestArtifactInfo testArtifactInfo;
+
+    private ReporterConfiguration reporterConfiguration;
+
+
+    public RunResult invoke()
+        throws TestSetFailedException, ReporterException
+    {
+        SurefireTestSuite suite = getActiveSuite();
+        suite.locateTestSets( getTestsClassLoader() );
+        if ( getTestSuiteDefinition().getTestForFork() != null )
+        {
+            suite.execute( getTestSuiteDefinition().getTestForFork(), getReporterManagerFactory(),
+                           getTestsClassLoader() );
+        }
+        else
+        {
+            suite.execute( getReporterManagerFactory(), getTestsClassLoader() );
+        }
+        return RunResult.totalCountOnly( suite.getNumTests() );
+    }
+
+    boolean isTestNGXmlTestSuite( TestSuiteDefinition testSuiteDefinition )
+    {
+        return testSuiteDefinition.getSuiteXmlFiles() != null && testSuiteDefinition.getSuiteXmlFiles().length
> 0 &&
+            testSuiteDefinition.getRequestedTest() == null;
+
+    }
+
+    private DefaultDirectoryScanner getDefaultDirectoryScanner()
+    {
+        return (DefaultDirectoryScanner) getDirectoryScanner();  // A hack to get hold of
parameters
+    }
+
+    private TestNGDirectoryTestSuite getDirectorySuite()
+    {
+        final DefaultDirectoryScanner defaultDirectoryScanner = getDefaultDirectoryScanner();
+        return new TestNGDirectoryTestSuite( defaultDirectoryScanner.getBasedir(),
+                                             new ArrayList( defaultDirectoryScanner.getIncludes()
),
+                                             new ArrayList( defaultDirectoryScanner.getExcludes()
),
+                                             getTestSuiteDefinition().getTestSourceDirectory().toString(),
+                                             testArtifactInfo.getVersion(), testArtifactInfo.getClassifier(),
+                                             providerProperties, reporterConfiguration.getReportsDirectory()
);
+    }
+
+    private TestNGXmlTestSuite getXmlSuite()
+    {
+        return new TestNGXmlTestSuite( getTestSuiteDefinition().getSuiteXmlFiles(),
+                                       getTestSuiteDefinition().getTestSourceDirectory().toString(),
+                                       testArtifactInfo.getVersion(), testArtifactInfo.getClassifier(),
+                                       providerProperties, reporterConfiguration.getReportsDirectory()
);
+    }
+
+
+    public SurefireTestSuite getActiveSuite()
+    {
+        return isTestNGXmlTestSuite( getTestSuiteDefinition() )
+            ? (SurefireTestSuite) getXmlSuite()
+            : getDirectorySuite();
+    }
+
+    public Iterator getSuites()
+    {
+        try
+        {
+            return getActiveSuite().locateTestSets( getTestsClassLoader() ).keySet().iterator();
+        }
+        catch ( TestSetFailedException e )
+        {
+            throw new RuntimeException( e );
+        }
+    }
+
+
+    public void setProviderProperties( Properties providerProperties )
+    {
+        this.providerProperties = providerProperties;
+    }
+
+    public void setTestArtifactInfo( TestArtifactInfo testArtifactInfo )
+    {
+        this.testArtifactInfo = testArtifactInfo;
+    }
+
+    public void setReporterConfiguration( ReporterConfiguration reporterConfiguration )
+    {
+        this.reporterConfiguration = reporterConfiguration;
+    }
+}

Propchange: maven/surefire/trunk/surefire-providers/surefire-testng/src/main/java/org/apache/maven/surefire/testng/TestNGProvider.java
------------------------------------------------------------------------------
    svn:eol-style = native



Mime
View raw message