diff --git a/src/test/java/org/codehaus/plexus/util/DirectoryScannerTest.java b/src/test/java/org/codehaus/plexus/util/DirectoryScannerTest.java
index 58b8b730..cbb7e744 100644
--- a/src/test/java/org/codehaus/plexus/util/DirectoryScannerTest.java
+++ b/src/test/java/org/codehaus/plexus/util/DirectoryScannerTest.java
@@ -21,6 +21,8 @@
import java.net.URI;
import java.net.URISyntaxException;
import java.net.URL;
+import java.nio.file.Files;
+import java.nio.file.Paths;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.List;
@@ -33,6 +35,7 @@
public class DirectoryScannerTest
extends FileBasedTestCase
{
+
private static String testDir = getTestDirectory().getPath();
public void testCrossPlatformIncludesString()
@@ -110,6 +113,44 @@ private void createTestFiles()
this.createFile( new File( testDir + "/scanner5.dat" ), 0 );
}
+ /**
+ * Check if 'src/test/resources/symlinks/src/sym*' test files (start with 'sym') exist and are symlinks.
+ * On some OS (like Windows 10), the 'git clone' requires to be executed with admin permissions and the
+ * 'core.symlinks=true' git option.
+ *
+ * @return true If files here and symlinks, false otherwise
+ */
+ private boolean checkTestFilesSymlinks()
+ {
+ File symlinksDirectory = new File( "src/test/resources/symlinks/src" );
+ try
+ {
+ List symlinks =
+ FileUtils.getFileAndDirectoryNames( symlinksDirectory, "sym*", null, true, true, true, true );
+ if ( symlinks.isEmpty() )
+ {
+ throw new IOException( "Symlinks files/directories are not present" );
+ }
+ for ( String symLink : symlinks )
+ {
+ if ( !Files.isSymbolicLink( Paths.get( symLink ) ) )
+ {
+ throw new IOException( String.format( "Path is not a symlink: %s", symLink ) );
+ }
+ }
+ return true;
+ }
+ catch ( IOException e )
+ {
+ System.err.println( String.format( "The unit test '%s.%s' will be skipped, reason: %s",
+ this.getClass().getSimpleName(), this.getName(), e.getMessage() ) );
+ System.out.println( String.format( "This test requires symlinks files in '%s' directory.",
+ symlinksDirectory.getPath() ) );
+ System.out.println( "On some OS (like Windows 10), files are present only if the clone/checkout is done in administrator mode, and correct (symlinks and not flat file/directory) if symlinks option are used (for git: git clone -c core.symlinks=true [url])" );
+ return false;
+ }
+ }
+
public void testGeneral()
throws IOException
{
@@ -146,6 +187,10 @@ public void testIncludesExcludesWithWhiteSpaces()
public void testFollowSymlinksFalse()
{
+ if ( !checkTestFilesSymlinks() )
+ {
+ return;
+ }
DirectoryScanner ds = new DirectoryScanner();
ds.setBasedir( new File( "src/test/resources/symlinks/src/" ) );
ds.setFollowSymlinks( false );
@@ -177,6 +222,10 @@ private void assertAlwaysIncluded( List included )
public void testFollowSymlinks()
{
+ if ( !checkTestFilesSymlinks() )
+ {
+ return;
+ }
DirectoryScanner ds = new DirectoryScanner();
ds.setBasedir( new File( "src/test/resources/symlinks/src/" ) );
ds.setFollowSymlinks( true );
@@ -446,8 +495,7 @@ private void assertInclusionsAndExclusions( String[] files, String[] excludedPat
StringBuilder buffer = new StringBuilder();
if ( !failedToExclude.isEmpty() )
{
- buffer.append( "Should NOT have included:\n" ).append(
- StringUtils.join( failedToExclude.iterator(),
+ buffer.append( "Should NOT have included:\n" ).append( StringUtils.join( failedToExclude.iterator(),
"\n\t- " ) );
}
@@ -458,8 +506,8 @@ private void assertInclusionsAndExclusions( String[] files, String[] excludedPat
buffer.append( "\n\n" );
}
- buffer.append( "Should have included:\n" )
- .append( StringUtils.join( failedToInclude.iterator(), "\n\t- " ) );
+ buffer.append( "Should have included:\n" ).append( StringUtils.join( failedToInclude.iterator(),
+ "\n\t- " ) );
}
if ( buffer.length() > 0 )
diff --git a/src/test/java/org/codehaus/plexus/util/cli/CommandlineTest.java b/src/test/java/org/codehaus/plexus/util/cli/CommandlineTest.java
index a84948b1..49692fd5 100644
--- a/src/test/java/org/codehaus/plexus/util/cli/CommandlineTest.java
+++ b/src/test/java/org/codehaus/plexus/util/cli/CommandlineTest.java
@@ -100,10 +100,11 @@ public void testExecuteBinaryOnPath()
cmd.createArg().setValue( "-version" );
Process process = cmd.execute();
String out = IOUtil.toString( process.getInputStream() );
- assertTrue( out.contains( "Apache Maven" ) );
- assertTrue( out.contains( "Maven home:" ) );
- assertTrue( out.contains( "Java version:" ) );
- assertTrue( out.contains( "Java home:" ) );
+ final String msg = String.format( "Maven seems not in PATH, 'mvn -version' result is: %s", out );
+ assertTrue( msg, out.contains( "Apache Maven" ) );
+ assertTrue( msg, out.contains( "Maven home:" ) );
+ assertTrue( msg, out.contains( "Java version:" ) );
+ assertTrue( msg, out.contains( "Java home:" ) );
}
catch ( Exception e )
{