Discussion:
[maven-surefire] 01/03: fixed test LongWindowsPathIT on Windows - canonical TEMP
t***@apache.org
2018-12-09 11:39:59 UTC
Permalink
This is an automated email from the ASF dual-hosted git repository.

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

commit 3e0ee79a52f0ef5e76648592bf86202ad2d381fc
Author: Tibor17 <***@apache.org>
AuthorDate: Thu Dec 6 23:51:12 2018 +0100

fixed test LongWindowsPathIT on Windows - canonical TEMP
---
.../src/test/java/org/apache/maven/surefire/its/LongWindowsPathIT.java | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/surefire-its/src/test/java/org/apache/maven/surefire/its/LongWindowsPathIT.java b/surefire-its/src/test/java/org/apache/maven/surefire/its/LongWindowsPathIT.java
index 6280835..551c18b 100644
--- a/surefire-its/src/test/java/org/apache/maven/surefire/its/LongWindowsPathIT.java
+++ b/surefire-its/src/test/java/org/apache/maven/surefire/its/LongWindowsPathIT.java
@@ -76,7 +76,7 @@ public class LongWindowsPathIT
else if ( line.contains( "SUREFIRE-1400 surefire.real.class.path=" ) )
{
assertThat( line )
- .contains( System.getProperty( "java.io.tmpdir" ) );
+ .contains( new File( System.getProperty( "java.io.tmpdir" ) ).getCanonicalPath() );
}
}
}
t***@apache.org
2018-12-09 11:40:00 UTC
Permalink
This is an automated email from the ASF dual-hosted git repository.

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

commit 59a0976c7278159c3a88502ad17c415562de4b57
Author: Tibor17 <***@apache.org>
AuthorDate: Fri Dec 7 01:24:26 2018 +0100

workspace in TMP for Windows builds
---
Jenkinsfile | 4 +++-
1 file changed, 3 insertions(+), 1 deletion(-)

diff --git a/Jenkinsfile b/Jenkinsfile
index 365035b..87c8cca 100644
--- a/Jenkinsfile
+++ b/Jenkinsfile
@@ -66,7 +66,9 @@ oses.eachWithIndex { osMapping, indexOfOs ->
def boolean makeReports = indexOfOs == 0 && indexOfMaven == 0 && indexOfJdk == 0
def failsafeItPort = 8000 + 100 * indexOfMaven + 10 * indexOfJdk
def allOptions = options + ["-Dfailsafe-integration-test-port=${failsafeItPort}", "-Dfailsafe-integration-test-stop-port=${1 + failsafeItPort}"]
- buildProcess(stageKey, jdkName, jdkTestName, mvnName, goals, allOptions, mavenOpts, makeReports)
+ ws(dir: "${os == 'windows' ? "${TEMP}\\${BUILD_TAG}" : pwd()}") {
+ buildProcess(stageKey, jdkName, jdkTestName, mvnName, goals, allOptions, mavenOpts, makeReports)
+ }
}
}
}
t***@apache.org
2018-12-09 11:40:01 UTC
Permalink
This is an automated email from the ASF dual-hosted git repository.

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

commit 9c443740b26caebe9be20925906778f489cd3b33
Author: Tibor17 <***@apache.org>
AuthorDate: Fri Dec 7 01:23:34 2018 +0100

[SUREFIRE-1608] dump error paths with the same root cause in Boot Manifest-JAR only once without stacktrace
---
.../booterclient/JarManifestForkConfiguration.java | 53 +++++++++++++++++-----
.../JarManifestForkConfigurationTest.java | 26 ++++++-----
2 files changed, 56 insertions(+), 23 deletions(-)

diff --git a/maven-surefire-common/src/main/java/org/apache/maven/plugin/surefire/booterclient/JarManifestForkConfiguration.java b/maven-surefire-common/src/main/java/org/apache/maven/plugin/surefire/booterclient/JarManifestForkConfiguration.java
index 79db5c6..62fa4c1 100644
--- a/maven-surefire-common/src/main/java/org/apache/maven/plugin/surefire/booterclient/JarManifestForkConfiguration.java
+++ b/maven-surefire-common/src/main/java/org/apache/maven/plugin/surefire/booterclient/JarManifestForkConfiguration.java
@@ -45,6 +45,7 @@ import java.util.jar.Manifest;

import static java.nio.file.Files.isDirectory;
import static org.apache.maven.plugin.surefire.SurefireHelper.escapeToPlatformPath;
+import static org.apache.maven.surefire.util.internal.StringUtils.NL;

/**
* @author <a href="mailto:***@apache.org">Tibor Digana (tibor17)</a>
@@ -113,15 +114,20 @@ public final class JarManifestForkConfiguration

Manifest man = new Manifest();

+ boolean dumpError = true;
+
// we can't use StringUtils.join here since we need to add a '/' to
// the end of directory entries - otherwise the jvm will ignore them.
StringBuilder cp = new StringBuilder();
for ( Iterator<String> it = classPath.iterator(); it.hasNext(); )
{
Path classPathElement = Paths.get( it.next() );
- String uri = toClasspathElementUri( parent, classPathElement, dumpLogDirectory );
- cp.append( uri );
- if ( isDirectory( classPathElement ) && !uri.endsWith( "/" ) )
+ ClasspathElementUri classpathElementUri =
+ toClasspathElementUri( parent, classPathElement, dumpLogDirectory, dumpError );
+ // too many errors in dump file with the same root cause may slow down the Boot Manifest-JAR startup
+ dumpError &= !classpathElementUri.absolute;
+ cp.append( classpathElementUri.uri );
+ if ( isDirectory( classPathElement ) && !classpathElementUri.uri.endsWith( "/" ) )
{
cp.append( '/' );
}
@@ -158,9 +164,10 @@ public final class JarManifestForkConfiguration
.toASCIIString();
}

- static String toClasspathElementUri( @Nonnull Path parent,
+ static ClasspathElementUri toClasspathElementUri( @Nonnull Path parent,
@Nonnull Path classPathElement,
- @Nonnull File dumpLogDirectory )
+ @Nonnull File dumpLogDirectory,
+ boolean dumpError )
throws IOException
{
try
@@ -168,16 +175,22 @@ public final class JarManifestForkConfiguration
String relativeUriPath = relativize( parent, classPathElement )
.replace( '\\', '/' );

- return new URI( null, relativeUriPath, null )
- .toASCIIString();
+ return new ClasspathElementUri( new URI( null, relativeUriPath, null ) );
}
catch ( IllegalArgumentException e )
{
- String error = "Boot Manifest-JAR contains absolute paths in classpath " + classPathElement;
- InPluginProcessDumpSingleton.getSingleton()
- .dumpException( e, error, dumpLogDirectory );
+ if ( dumpError )
+ {
+ String error = "Boot Manifest-JAR contains absolute paths in classpath '"
+ + classPathElement
+ + "'"
+ + NL
+ + "Hint: <argLine>-Djdk.net.URLClassPath.disableClassPathURLCheck=true</argLine>";
+ InPluginProcessDumpSingleton.getSingleton()
+ .dumpStreamText( error, dumpLogDirectory );
+ }

- return toAbsoluteUri( classPathElement );
+ return new ClasspathElementUri( toAbsoluteUri( classPathElement ) );
}
catch ( URISyntaxException e )
{
@@ -188,4 +201,22 @@ public final class JarManifestForkConfiguration
+ parent, e );
}
}
+
+ static final class ClasspathElementUri
+ {
+ final String uri;
+ final boolean absolute;
+
+ ClasspathElementUri( String uri )
+ {
+ this.uri = uri;
+ absolute = true;
+ }
+
+ ClasspathElementUri( URI uri )
+ {
+ this.uri = uri.toASCIIString();
+ absolute = false;
+ }
+ }
}
diff --git a/maven-surefire-common/src/test/java/org/apache/maven/plugin/surefire/booterclient/JarManifestForkConfigurationTest.java b/maven-surefire-common/src/test/java/org/apache/maven/plugin/surefire/booterclient/JarManifestForkConfigurationTest.java
index 18b205a..5e71238 100644
--- a/maven-surefire-common/src/test/java/org/apache/maven/plugin/surefire/booterclient/JarManifestForkConfigurationTest.java
+++ b/maven-surefire-common/src/test/java/org/apache/maven/plugin/surefire/booterclient/JarManifestForkConfigurationTest.java
@@ -24,6 +24,7 @@ import java.net.URI;
import java.net.URISyntaxException;
import java.nio.file.Path;

+import org.apache.maven.plugin.surefire.booterclient.JarManifestForkConfiguration.ClasspathElementUri;
import org.apache.maven.plugin.surefire.booterclient.output.InPluginProcessDumpSingleton;

import static org.apache.maven.plugin.surefire.booterclient.JarManifestForkConfiguration.relativize;
@@ -38,6 +39,7 @@ import org.junit.runner.RunWith;

import static org.fest.util.Files.delete;
import static org.fest.util.Files.newTemporaryFolder;
+import static org.mockito.ArgumentMatchers.anyBoolean;
import static org.mockito.ArgumentMatchers.same;
import static org.powermock.api.mockito.PowerMockito.mock;
import static org.powermock.api.mockito.PowerMockito.mockStatic;
@@ -84,9 +86,9 @@ public class JarManifestForkConfigurationTest
when( classPathElement.toString() ).thenReturn( "/home/me/.m2/repository/grp/art/1.0/art-1.0.jar" );
when( relativize( parent, classPathElement ) )
.thenReturn( "../../../.m2/repository/grp/art/1.0/art-1.0.jar" );
- when( toClasspathElementUri( same( parent ), same( classPathElement ), same( dumpDirectory ) ) )
+ when( toClasspathElementUri( same( parent ), same( classPathElement ), same( dumpDirectory ), anyBoolean() ) )
.thenCallRealMethod();
- assertThat( toClasspathElementUri( parent, classPathElement, dumpDirectory ) )
+ assertThat( toClasspathElementUri( parent, classPathElement, dumpDirectory, true ).uri )
.isEqualTo( "../../../.m2/repository/grp/art/1.0/art-1.0.jar" );
}

@@ -101,9 +103,9 @@ public class JarManifestForkConfigurationTest
when( classPathElement.toString() ).thenReturn( "/the Maven repo/grp/art/1.0/art-1.0.jar" );
when( relativize( parent, classPathElement ) )
.thenReturn( "../../../../../the Maven repo/grp/art/1.0/art-1.0.jar" );
- when( toClasspathElementUri( same( parent ), same( classPathElement ), same( dumpDirectory ) ) )
+ when( toClasspathElementUri( same( parent ), same( classPathElement ), same( dumpDirectory ), anyBoolean() ) )
.thenCallRealMethod();
- assertThat( toClasspathElementUri( parent, classPathElement, dumpDirectory ) )
+ assertThat( toClasspathElementUri( parent, classPathElement, dumpDirectory, true ).uri )
.isEqualTo( "../../../../../the%20Maven%20repo/grp/art/1.0/art-1.0.jar" );
}

@@ -118,9 +120,9 @@ public class JarManifestForkConfigurationTest
when( classPathElement.toString() ).thenReturn( "C:\\Users\\me\\.m2\\repository\\grp\\art\\1.0\\art-1.0.jar" );
when( relativize( parent, classPathElement ) )
.thenReturn( "..\\..\\..\\Users\\me\\.m2\\repository\\grp\\art\\1.0\\art-1.0.jar" );
- when( toClasspathElementUri( same( parent ), same( classPathElement ), same( dumpDirectory ) ) )
+ when( toClasspathElementUri( same( parent ), same( classPathElement ), same( dumpDirectory ), anyBoolean() ) )
.thenCallRealMethod();
- assertThat( toClasspathElementUri( parent, classPathElement, dumpDirectory ) )
+ assertThat( toClasspathElementUri( parent, classPathElement, dumpDirectory, true ).uri )
.isEqualTo( "../../../Users/me/.m2/repository/grp/art/1.0/art-1.0.jar" );
}

@@ -135,9 +137,9 @@ public class JarManifestForkConfigurationTest
when( classPathElement.toString() ).thenReturn( "C:\\Test User\\me\\.m2\\repository\\grp\\art\\1.0\\art-1.0.jar" );
when( relativize( parent, classPathElement ) )
.thenReturn( "..\\..\\..\\Test User\\me\\.m2\\repository\\grp\\art\\1.0\\art-1.0.jar" );
- when( toClasspathElementUri( same( parent ), same( classPathElement ), same( dumpDirectory ) ) )
+ when( toClasspathElementUri( same( parent ), same( classPathElement ), same( dumpDirectory ), anyBoolean() ) )
.thenCallRealMethod();
- assertThat( toClasspathElementUri( parent, classPathElement, dumpDirectory ) )
+ assertThat( toClasspathElementUri( parent, classPathElement, dumpDirectory, true ).uri )
.isEqualTo( "../../../Test%20User/me/.m2/repository/grp/art/1.0/art-1.0.jar" );
}

@@ -164,11 +166,11 @@ public class JarManifestForkConfigurationTest
} );
when( relativize( same( parent ), same( classPathElement ) ) )
.thenThrow( new IllegalArgumentException() );
- when( toClasspathElementUri( same( parent ), same( classPathElement ), same( dumpDirectory ) ) )
+ when( toClasspathElementUri( same( parent ), same( classPathElement ), same( dumpDirectory ), anyBoolean() ) )
.thenCallRealMethod();
when( toAbsoluteUri( same( classPathElement ) ) )
.thenCallRealMethod();
- assertThat( toClasspathElementUri( parent, classPathElement, dumpDirectory ) )
+ assertThat( toClasspathElementUri( parent, classPathElement, dumpDirectory, true ).uri )
.isEqualTo( "file:///X:/Users/me/.m2/repository/grp/art/1.0/art-1.0.jar" );
}

@@ -213,9 +215,9 @@ public class JarManifestForkConfigurationTest
Path testDir = new File( TMP, "@3 test with white spaces" )
.toPath();

- String testDirUriPath = toClasspathElementUri( parentDir, testDir, dumpDirectory );
+ ClasspathElementUri testDirUriPath = toClasspathElementUri( parentDir, testDir, dumpDirectory, true );

- assertThat( testDirUriPath )
+ assertThat( testDirUriPath.uri )
.isEqualTo( "../@3%20test%20with%20white%20spaces" );
}
}

Loading...