[SUREFIRE-1194] reporter argument does not work for TestNG

Project: http://git-wip-us.apache.org/repos/asf/maven-surefire/repo
Commit: http://git-wip-us.apache.org/repos/asf/maven-surefire/commit/2261bcea
Tree: http://git-wip-us.apache.org/repos/asf/maven-surefire/tree/2261bcea
Diff: http://git-wip-us.apache.org/repos/asf/maven-surefire/diff/2261bcea

Branch: refs/heads/master
Commit: 2261bcea68d4cf1dbae437afa6be0b4a06916b35
Parents: 7fe7a2a
Author: Tibor17 <tibo...@lycos.com>
Authored: Tue Dec 15 01:28:02 2015 +0100
Committer: Tibor17 <tibo...@lycos.com>
Committed: Tue Dec 15 01:29:32 2015 +0100

----------------------------------------------------------------------
 .../plugin/surefire/AbstractSurefireMojo.java   | 11 ++---
 .../src/site/apt/examples/testng.apt.vm         |  2 +-
 .../its/CheckTestNgListenerReporterIT.java      | 42 ++++++++++++--------
 .../testng/conf/TestNG513Configurator.java      |  2 +-
 .../testng/conf/TestNGMapConfigurator.java      |  4 +-
 5 files changed, 33 insertions(+), 28 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/maven-surefire/blob/2261bcea/maven-surefire-common/src/main/java/org/apache/maven/plugin/surefire/AbstractSurefireMojo.java
----------------------------------------------------------------------
diff --git 
a/maven-surefire-common/src/main/java/org/apache/maven/plugin/surefire/AbstractSurefireMojo.java
 
b/maven-surefire-common/src/main/java/org/apache/maven/plugin/surefire/AbstractSurefireMojo.java
index 3e0d840..f169446 100644
--- 
a/maven-surefire-common/src/main/java/org/apache/maven/plugin/surefire/AbstractSurefireMojo.java
+++ 
b/maven-surefire-common/src/main/java/org/apache/maven/plugin/surefire/AbstractSurefireMojo.java
@@ -1154,19 +1154,16 @@ public abstract class AbstractSurefireMojo
             range = VersionRange.createFromVersionSpec( "[5.14.1,5.14.3)" );
             if ( range.containsVersion( version ) )
             {
+                log.warn( "The 'reporter' or 'listener' may not work properly 
in TestNG 5.14.1 and 5.14.2." );
                 return 
"org.apache.maven.surefire.testng.conf.TestNG5141Configurator";
             }
             range = VersionRange.createFromVersionSpec( "[5.14.3,6.0)" );
             if ( range.containsVersion( version ) )
             {
-                if ( version.equals( new DefaultArtifactVersion( "5.14.3" ) ) )
+                if ( version.equals( new DefaultArtifactVersion( 
"[5.14.3,5.14.5]" ) ) )
                 {
-                    throw new MojoExecutionException( "Due to a bad formatted 
pom.xml, "
-                                                      + "TestNG 5.14.3 is not 
supported" );
-                }
-                if ( VersionRange.createFromVersionSpec( "[5.14.4,5.14.5]" 
).containsVersion( version ) )
-                {
-                    log.warn( "Due to a bad formatted pom.xml, TestNG 5.14.4 
and 5.14.5 may not work" );
+                    throw new MojoExecutionException( "TestNG 5.14.3-5.14.5 is 
not supported. "
+                            + "System dependency org.testng:guice missed 
path." );
                 }
                 return 
"org.apache.maven.surefire.testng.conf.TestNG5143Configurator";
             }

http://git-wip-us.apache.org/repos/asf/maven-surefire/blob/2261bcea/maven-surefire-plugin/src/site/apt/examples/testng.apt.vm
----------------------------------------------------------------------
diff --git a/maven-surefire-plugin/src/site/apt/examples/testng.apt.vm 
b/maven-surefire-plugin/src/site/apt/examples/testng.apt.vm
index 85a6349..765e564 100644
--- a/maven-surefire-plugin/src/site/apt/examples/testng.apt.vm
+++ b/maven-surefire-plugin/src/site/apt/examples/testng.apt.vm
@@ -286,7 +286,7 @@ Using TestNG
   You can implement TestNG listener interface <<<org.testng.ITestListener>>> in
   a separate test artifact <<<your-testng-listener-artifact>>> with 
scope=test, or in project test source code
   <<<src/test/java>>>. You can filter test artifacts by the parameter 
<<<dependenciesToScan>>> to load its classes
-  in current ClassLoader of surefire-testng provider.
+  in current ClassLoader of surefire-testng provider. The TestNG reporter 
class should implement <<<org.testng.IReporter>>>.
 
 * The level of verbosity
 

http://git-wip-us.apache.org/repos/asf/maven-surefire/blob/2261bcea/surefire-integration-tests/src/test/java/org/apache/maven/surefire/its/CheckTestNgListenerReporterIT.java
----------------------------------------------------------------------
diff --git 
a/surefire-integration-tests/src/test/java/org/apache/maven/surefire/its/CheckTestNgListenerReporterIT.java
 
b/surefire-integration-tests/src/test/java/org/apache/maven/surefire/its/CheckTestNgListenerReporterIT.java
index 8e25e5d..3558bce 100644
--- 
a/surefire-integration-tests/src/test/java/org/apache/maven/surefire/its/CheckTestNgListenerReporterIT.java
+++ 
b/surefire-integration-tests/src/test/java/org/apache/maven/surefire/its/CheckTestNgListenerReporterIT.java
@@ -20,8 +20,6 @@ package org.apache.maven.surefire.its;
  */
 
 import org.apache.maven.surefire.its.fixture.SurefireJUnit4IntegrationTestCase;
-import org.apache.maven.surefire.its.fixture.SurefireLauncher;
-import org.junit.After;
 import org.junit.Test;
 import org.junit.runner.RunWith;
 import org.junit.runners.Parameterized;
@@ -29,18 +27,20 @@ import org.junit.runners.Parameterized;
 import java.util.Arrays;
 import java.util.Collection;
 
+import static org.junit.runners.Parameterized.Parameter;
+import static org.junit.runners.Parameterized.Parameters;
+
 /**
  * Test simple TestNG listener and reporter
  *
  * @author <a href="mailto:dfabul...@apache.org";>Dan Fabulich</a>
  * @author <a href="mailto:krosenv...@apache.org";>Kristian Rosenvold</a>
  */
-@RunWith(Parameterized.class)
+@RunWith( Parameterized.class )
 public class CheckTestNgListenerReporterIT
     extends SurefireJUnit4IntegrationTestCase
 {
-
-    @Parameterized.Parameters(name = "{index}: TestNG {0}")
+    @Parameters( name = "{index}: TestNG {0}" )
     public static Collection<Object[]> data()
     {
         return Arrays.asList(new Object[][] {
@@ -49,34 +49,42 @@ public class CheckTestNgListenerReporterIT
             { "5.10" },
             { "5.13" }, // "reporterslist" param becomes String instead of 
List<ReporterConfig>
                         // "listener" param becomes String instead of 
List<Class>
+
+                // configure(Map) in 5.14.1 and 5.14.2 is transforming 
List<Class> into a String with a space as separator.
+                // Then configure(CommandLineArgs) splits this String into a 
List<String> with , or ; as separator => fail.
+                // If we used configure(CommandLineArgs), we would not have 
the problem with white spaces.
             //{ "5.14.1" }, // "listener" param becomes List instead of String
                             // Fails: Issue with 5.14.1 and 5.14.2 => join 
with <space>, split with ","
                             // TODO will work with "configure(CommandLineArgs)"
             //{ "5.14.2" }, // ReporterConfig is not available
+
             //{ "5.14.3" }, // TestNG uses "reporter" instead of 
"reporterslist"
                           // Both String or List are possible for "listener"
-                          // Fails: Bad formatted pom => transitive 
dependencies are missing
-            { "5.14.4" }, // Usage of org.testng:guice
-                          // Caution: Some TestNG features may fail with 
5.14.4 and 5.14.5 due to missing dependency
+                          // Fails: not able to test due to system dependency 
org.testng:guice missed the path and use to break CI
+                          // ClassNotFoundException: 
com.beust.jcommander.ParameterException
+
+            //{ "5.14.4" }, { "5.14.5" }, // Fails: not able to test due to 
system dependency org.testng:guice missed the path and use to break CI
+                                        // ClassNotFoundException: 
com.beust.jcommander.ParameterException
+
             { "5.14.6" }, // Usage of org.testng:guice removed
             { "5.14.9" }, // Latest 5.14.x TestNG version
             { "6.0" },
-            { "6.9.9" } // Current latest TestNG version
+            { "6.9.9" } // Currently latest TestNG version
         });
     }
 
-    @Parameterized.Parameter
+    @Parameter
     public String version;
-    private SurefireLauncher verifierStarter;
 
     @Test
     public void testNgListenerReporter()
     {
-        verifierStarter = unpack( "testng-listener-reporter", "_" + version );
-        verifierStarter.resetInitialGoals( version );
-        verifierStarter.executeTest().verifyErrorFree( 1 )
-            .getTargetFile( "resultlistener-output.txt" ).assertFileExists()
-            .getTargetFile( "suitelistener-output.txt" ).assertFileExists()
-            .getTargetFile( "reporter-output.txt" ).assertFileExists();
+        unpack( "testng-listener-reporter", "_" + version )
+                .resetInitialGoals( version )
+                .executeTest()
+                .verifyErrorFree( 1 )
+                .getTargetFile( "resultlistener-output.txt" 
).assertFileExists()
+                .getTargetFile( "suitelistener-output.txt" ).assertFileExists()
+                .getTargetFile( "reporter-output.txt" ).assertFileExists();
     }
 }

http://git-wip-us.apache.org/repos/asf/maven-surefire/blob/2261bcea/surefire-providers/surefire-testng/src/main/java/org/apache/maven/surefire/testng/conf/TestNG513Configurator.java
----------------------------------------------------------------------
diff --git 
a/surefire-providers/surefire-testng/src/main/java/org/apache/maven/surefire/testng/conf/TestNG513Configurator.java
 
b/surefire-providers/surefire-testng/src/main/java/org/apache/maven/surefire/testng/conf/TestNG513Configurator.java
index f38df08..ce44dd4 100644
--- 
a/surefire-providers/surefire-testng/src/main/java/org/apache/maven/surefire/testng/conf/TestNG513Configurator.java
+++ 
b/surefire-providers/surefire-testng/src/main/java/org/apache/maven/surefire/testng/conf/TestNG513Configurator.java
@@ -29,7 +29,7 @@ public class TestNG513Configurator
 {
 
     @Override
-    protected Object convertReporterConfig( String val )
+    protected Object convertReporterConfig( Object val )
     {
         return val;
     }

http://git-wip-us.apache.org/repos/asf/maven-surefire/blob/2261bcea/surefire-providers/surefire-testng/src/main/java/org/apache/maven/surefire/testng/conf/TestNGMapConfigurator.java
----------------------------------------------------------------------
diff --git 
a/surefire-providers/surefire-testng/src/main/java/org/apache/maven/surefire/testng/conf/TestNGMapConfigurator.java
 
b/surefire-providers/surefire-testng/src/main/java/org/apache/maven/surefire/testng/conf/TestNGMapConfigurator.java
index fcf9a91..96e0b85 100755
--- 
a/surefire-providers/surefire-testng/src/main/java/org/apache/maven/surefire/testng/conf/TestNGMapConfigurator.java
+++ 
b/surefire-providers/surefire-testng/src/main/java/org/apache/maven/surefire/testng/conf/TestNGMapConfigurator.java
@@ -91,7 +91,7 @@ public class TestNGMapConfigurator
             {
                 // for TestNG 5.6 or higher
                 // TODO support multiple reporters?
-                val = convertReporterConfig( entry.getValue() );
+                val = convertReporterConfig( val );
                 key = "reporterslist";
             }
             else if ( "junit".equals( key ) )
@@ -142,7 +142,7 @@ public class TestNGMapConfigurator
     }
 
     // ReporterConfig only became available in later versions of TestNG
-    protected Object convertReporterConfig( String val )
+    protected Object convertReporterConfig( Object val )
     {
         final String reporterConfigClassName = "org.testng.ReporterConfig";
         try

Reply via email to