This is an automated email from the ASF dual-hosted git repository.

tibordigana pushed a commit to branch 3.0.0-M2
in repository https://gitbox.apache.org/repos/asf/maven-surefire.git

commit 85105161f413f9cfa160a4a86c6d6a5926c0d6f9
Author: Tibor17 <tibordig...@apache.org>
AuthorDate: Sun Nov 11 23:38:32 2018 +0100

    [SUREFIRE-1597] ModularClasspathForkConfiguration with debug logs (@args 
file and its path on file system)
---
 .../booterclient/DefaultForkConfiguration.java     |  9 ++-
 .../ModularClasspathForkConfiguration.java         | 83 ++++++++++++----------
 .../ModularClasspathForkConfigurationTest.java     | 51 ++++++++-----
 3 files changed, 88 insertions(+), 55 deletions(-)

diff --git 
a/maven-surefire-common/src/main/java/org/apache/maven/plugin/surefire/booterclient/DefaultForkConfiguration.java
 
b/maven-surefire-common/src/main/java/org/apache/maven/plugin/surefire/booterclient/DefaultForkConfiguration.java
index 8722f52..fa99451 100644
--- 
a/maven-surefire-common/src/main/java/org/apache/maven/plugin/surefire/booterclient/DefaultForkConfiguration.java
+++ 
b/maven-surefire-common/src/main/java/org/apache/maven/plugin/surefire/booterclient/DefaultForkConfiguration.java
@@ -149,6 +149,11 @@ public abstract class DefaultForkConfiguration
         return cli;
     }
 
+    protected ConsoleLogger getLogger()
+    {
+        return log;
+    }
+
     @Nonnull
     protected List<String> toCompleteClasspath( StartupConfiguration conf ) 
throws SurefireBooterForkException
     {
@@ -163,8 +168,8 @@ public abstract class DefaultForkConfiguration
         Classpath providerClasspath = pathConfig.getProviderClasspath();
         Classpath completeClasspath = join( join( bootClasspath, testClasspath 
), providerClasspath );
 
-        log.debug( completeClasspath.getLogMessage( "boot classpath:" ) );
-        log.debug( completeClasspath.getCompactLogMessage( "boot(compact) 
classpath:" ) );
+        getLogger().debug( completeClasspath.getLogMessage( "boot classpath:" 
) );
+        getLogger().debug( completeClasspath.getCompactLogMessage( 
"boot(compact) classpath:" ) );
 
         return completeClasspath.getClassPath();
     }
diff --git 
a/maven-surefire-common/src/main/java/org/apache/maven/plugin/surefire/booterclient/ModularClasspathForkConfiguration.java
 
b/maven-surefire-common/src/main/java/org/apache/maven/plugin/surefire/booterclient/ModularClasspathForkConfiguration.java
index 59f86de..fb8c86a 100644
--- 
a/maven-surefire-common/src/main/java/org/apache/maven/plugin/surefire/booterclient/ModularClasspathForkConfiguration.java
+++ 
b/maven-surefire-common/src/main/java/org/apache/maven/plugin/surefire/booterclient/ModularClasspathForkConfiguration.java
@@ -35,7 +35,6 @@ import org.objectweb.asm.ModuleVisitor;
 import javax.annotation.Nonnegative;
 import javax.annotation.Nonnull;
 import javax.annotation.Nullable;
-import java.io.BufferedWriter;
 import java.io.File;
 import java.io.FileInputStream;
 import java.io.FileWriter;
@@ -49,6 +48,8 @@ import java.util.Properties;
 import static java.io.File.createTempFile;
 import static java.io.File.pathSeparatorChar;
 import static 
org.apache.maven.plugin.surefire.SurefireHelper.escapeToPlatformPath;
+import static org.apache.maven.shared.utils.StringUtils.replace;
+import static org.apache.maven.surefire.util.internal.StringUtils.NL;
 import static org.objectweb.asm.Opcodes.ASM7;
 
 /**
@@ -116,86 +117,94 @@ public class ModularClasspathForkConfiguration
             throws IOException
     {
         File surefireArgs = createTempFile( "surefireargs", "", 
getTempDirectory() );
-        if ( !isDebug() )
+        if ( isDebug() )
+        {
+            getLogger().debug( "Path to args file: " +  
surefireArgs.getCanonicalPath() );
+        }
+        else
         {
             surefireArgs.deleteOnExit();
         }
 
-        try ( BufferedWriter writer = new BufferedWriter( new FileWriter( 
surefireArgs ), 64 * 1024 ) )
+        try ( FileWriter io = new FileWriter( surefireArgs ) )
         {
+            StringBuilder args = new StringBuilder( 64 * 1024 );
             if ( !modulePath.isEmpty() )
             {
-                writer.write( "--module-path" );
-                writer.newLine();
+                args.append( "--module-path" )
+                        .append( ' ' );
 
                 for ( Iterator<String> it = modulePath.iterator(); 
it.hasNext(); )
                 {
-                    writer.append( it.next() );
+                    args.append( it.next() );
                     if ( it.hasNext() )
                     {
-                        writer.append( pathSeparatorChar );
+                        args.append( pathSeparatorChar );
                     }
                 }
 
-                writer.newLine();
+                args.append( NL );
             }
 
             if ( !classPath.isEmpty() )
             {
-                writer.write( "--class-path" );
-                writer.newLine();
+                args.append( "--class-path" )
+                        .append( ' ' );
                 for ( Iterator<String> it = classPath.iterator(); 
it.hasNext(); )
                 {
-                    writer.append( it.next() );
+                    args.append( it.next() );
                     if ( it.hasNext() )
                     {
-                        writer.append( pathSeparatorChar );
+                        args.append( pathSeparatorChar );
                     }
                 }
 
-                writer.newLine();
+                args.append( NL );
             }
 
             final String moduleName = toModuleName( moduleDescriptor );
 
-            writer.write( "--patch-module" );
-            writer.newLine();
-            writer.append( moduleName )
+            args.append( "--patch-module" )
+                    .append( ' ' )
+                    .append( moduleName )
                     .append( '=' )
-                    .append( patchFile.getPath() );
-
-            writer.newLine();
+                    .append( patchFile.getPath() )
+                    .append( NL );
 
             for ( String pkg : packages )
             {
-                writer.write( "--add-exports" );
-                writer.newLine();
-                writer.append( moduleName )
+                args.append( "--add-exports" )
+                        .append( ' ' )
+                        .append( moduleName )
                         .append( '/' )
                         .append( pkg )
                         .append( '=' )
-                        .append( "ALL-UNNAMED" );
-
-                writer.newLine();
+                        .append( "ALL-UNNAMED" )
+                        .append( NL );
             }
 
-            writer.write( "--add-modules" );
-            writer.newLine();
-            writer.append( moduleName );
+            args.append( "--add-modules" )
+                    .append( ' ' )
+                    .append( moduleName )
+                    .append( NL );
 
-            writer.newLine();
-
-            writer.write( "--add-reads" );
-            writer.newLine();
-            writer.append( moduleName )
+            args.append( "--add-reads" )
+                    .append( ' ' )
+                    .append( moduleName )
                     .append( '=' )
-                    .append( "ALL-UNNAMED" );
+                    .append( "ALL-UNNAMED" )
+                    .append( NL );
+
+            args.append( startClassName );
 
-            writer.newLine();
+            String argsFileContent = args.toString();
 
-            writer.write( startClassName );
+            if ( isDebug() )
+            {
+                getLogger().debug( "args file content: " + replace( 
argsFileContent, NL, "; " ) );
+            }
 
-            writer.newLine();
+            io.write( argsFileContent );
 
             return surefireArgs;
         }
diff --git 
a/maven-surefire-common/src/test/java/org/apache/maven/plugin/surefire/booterclient/ModularClasspathForkConfigurationTest.java
 
b/maven-surefire-common/src/test/java/org/apache/maven/plugin/surefire/booterclient/ModularClasspathForkConfigurationTest.java
index 04145d9..c2b327e 100644
--- 
a/maven-surefire-common/src/test/java/org/apache/maven/plugin/surefire/booterclient/ModularClasspathForkConfigurationTest.java
+++ 
b/maven-surefire-common/src/test/java/org/apache/maven/plugin/surefire/booterclient/ModularClasspathForkConfigurationTest.java
@@ -84,23 +84,42 @@ public class ModularClasspathForkConfigurationTest
         File jigsawArgsFile =
                 config.createArgsFile( descriptor, modulePath, classPath, 
packages, patchFile, startClassName );
 
-        assertThat( jigsawArgsFile ).isNotNull();
+        assertThat( jigsawArgsFile )
+                .isNotNull();
+
         List<String> argsFileLines = readAllLines( jigsawArgsFile.toPath(), 
UTF_8 );
-        assertThat( argsFileLines ).hasSize( 13 );
-        assertThat( argsFileLines.get( 0 ) ).isEqualTo( "--module-path" );
-        assertThat( argsFileLines.get( 1 ) ).isEqualTo( "modular.jar" + 
pathSeparator + "target/classes" );
-        assertThat( argsFileLines.get( 2 ) ).isEqualTo( "--class-path" );
+
+        assertThat( argsFileLines )
+                .hasSize( 7 );
+
+        assertThat( argsFileLines.get( 0 ) )
+                .isEqualTo( "--module-path"
+                        + " modular.jar"
+                        + pathSeparator
+                        + "target/classes" );
+
+        assertThat( argsFileLines.get( 1 ) )
+                .isEqualTo( "--class-path"
+                        + " booter.jar"
+                        + pathSeparator
+                        + "non-modular.jar"
+                        + pathSeparator
+                        + patchFile.getPath() );
+
+        assertThat( argsFileLines.get( 2 ) )
+                .isEqualTo( "--patch-module abc=" + patchFile.getPath() );
+
         assertThat( argsFileLines.get( 3 ) )
-                .isEqualTo( "booter.jar" + pathSeparator + "non-modular.jar" + 
pathSeparator + patchFile.getPath() );
-        assertThat( argsFileLines.get( 4 ) ).isEqualTo( "--patch-module" );
-        assertThat( argsFileLines.get( 5 ) ).isEqualTo( "abc=" + 
patchFile.getPath() );
-        assertThat( argsFileLines.get( 6 ) ).isEqualTo( "--add-exports" );
-        assertThat( argsFileLines.get( 7 ) ).isEqualTo( 
"abc/org.apache.abc=ALL-UNNAMED" );
-        assertThat( argsFileLines.get( 8 ) ).isEqualTo( "--add-modules" );
-        assertThat( argsFileLines.get( 9 ) ).isEqualTo( "abc" );
-        assertThat( argsFileLines.get( 10 ) ).isEqualTo( "--add-reads" );
-        assertThat( argsFileLines.get( 11 ) ).isEqualTo( "abc=ALL-UNNAMED" );
-        assertThat( argsFileLines.get( 12 ) ).isEqualTo( 
ForkedBooter.class.getName() );
+                .isEqualTo( "--add-exports abc/org.apache.abc=ALL-UNNAMED" );
+
+        assertThat( argsFileLines.get( 4 ) )
+                .isEqualTo( "--add-modules abc" );
+
+        assertThat( argsFileLines.get( 5 ) )
+                .isEqualTo( "--add-reads abc=ALL-UNNAMED" );
+
+        assertThat( argsFileLines.get( 6 ) )
+                .isEqualTo( ForkedBooter.class.getName() );
 
         ModularClasspath modularClasspath = new ModularClasspath( descriptor, 
modulePath, packages, patchFile );
         Classpath testClasspathUrls = new Classpath( singleton( "target" + 
separator + "test-classes" ) );
@@ -121,7 +140,7 @@ public class ModularClasspathForkConfigurationTest
         File argFile = new File( cli.getArguments()[0].substring( 1 ) );
         assertThat( argFile ).isFile();
         List<String> argsFileLines2 = readAllLines( argFile.toPath(), UTF_8 );
-        assertThat( argsFileLines2 ).hasSize( 13 );
+        assertThat( argsFileLines2 ).hasSize( 7 );
         for ( int i = 0; i < argsFileLines2.size(); i++ )
         {
             String line = argsFileLines2.get( i );

Reply via email to