You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@polygene.apache.org by pa...@apache.org on 2016/11/19 22:50:32 UTC
[31/35] zest-java git commit: tools/shell: fix non-isolated tests and
file operations
tools/shell: fix non-isolated tests and file operations
Tests are isolated since 7524f12d41e945a406dad98aa309d899bf2cc977.
This commit fixes tools/shell tests that relied on running at the
project\u2019s root.
Fixes files operations, e.g. file copy now preserve permissions.
Project: http://git-wip-us.apache.org/repos/asf/zest-java/repo
Commit: http://git-wip-us.apache.org/repos/asf/zest-java/commit/e504fe4a
Tree: http://git-wip-us.apache.org/repos/asf/zest-java/tree/e504fe4a
Diff: http://git-wip-us.apache.org/repos/asf/zest-java/diff/e504fe4a
Branch: refs/heads/develop
Commit: e504fe4a24de55c8faa92d2a59f09f9204f85948
Parents: a16b956
Author: Paul Merlin <pa...@apache.org>
Authored: Sat Nov 19 20:54:47 2016 +0100
Committer: Paul Merlin <pa...@apache.org>
Committed: Sat Nov 19 20:54:47 2016 +0100
----------------------------------------------------------------------
.../org/apache/zest/tools/shell/FileUtils.java | 67 ++++++++++----------
.../create/project/AbstractProjectCreator.java | 26 +-------
.../apache/zest/tools/shell/FileUtilsTest.java | 61 +++++++-----------
.../org/apache/zest/tools/shell/TestHelper.java | 7 +-
.../tools/shell/create/CreateProjectTest.java | 11 +---
.../project/DefaultProjectCreatorTest.java | 15 +----
.../create/project/NullProjectCreatorTest.java | 13 +---
.../create/project/RestProjectCreatorTest.java | 13 +---
8 files changed, 71 insertions(+), 142 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/zest-java/blob/e504fe4a/tools/shell/src/main/java/org/apache/zest/tools/shell/FileUtils.java
----------------------------------------------------------------------
diff --git a/tools/shell/src/main/java/org/apache/zest/tools/shell/FileUtils.java b/tools/shell/src/main/java/org/apache/zest/tools/shell/FileUtils.java
index 868d2eb..d7363db 100644
--- a/tools/shell/src/main/java/org/apache/zest/tools/shell/FileUtils.java
+++ b/tools/shell/src/main/java/org/apache/zest/tools/shell/FileUtils.java
@@ -20,14 +20,18 @@
package org.apache.zest.tools.shell;
import java.io.BufferedInputStream;
-import java.io.BufferedOutputStream;
import java.io.File;
import java.io.FileInputStream;
-import java.io.FileOutputStream;
import java.io.FileWriter;
import java.io.IOException;
import java.io.InputStream;
import java.io.PrintWriter;
+import java.io.UncheckedIOException;
+import java.nio.file.FileVisitResult;
+import java.nio.file.Files;
+import java.nio.file.Path;
+import java.nio.file.SimpleFileVisitor;
+import java.nio.file.attribute.BasicFileAttributes;
import java.util.HashMap;
import java.util.Map;
import java.util.Properties;
@@ -36,41 +40,42 @@ public class FileUtils
{
public static File createDir( String directoryName )
{
- File dir = new File( directoryName ).getAbsoluteFile();
- if( !dir.mkdirs() )
+ try
{
- System.err.println( "Unable to create directory " + dir );
-// System.exit( 1 ); during testing, I am tired of deleting directory over and over again.
+ File dir = new File( directoryName ).getAbsoluteFile();
+ Files.createDirectories( dir.toPath() );
+ return dir;
+ }
+ catch( IOException ex )
+ {
+ throw new UncheckedIOException( ex );
}
- return dir;
}
- public static boolean removeDir( File dir )
+ public static void removeDir( File dir ) throws IOException
{
- File[] files = dir.listFiles();
- boolean success = true;
- if( files != null )
+ Files.walkFileTree( dir.toPath(), new SimpleFileVisitor<Path>()
{
- for( File f : files )
+ @Override
+ public FileVisitResult visitFile( final Path file, final BasicFileAttributes attrs ) throws IOException
{
- if( f.isDirectory() )
- {
- success = success && removeDir( f );
- }
- else
- {
- success = success && f.delete();
- }
+ Files.delete( file );
+ return FileVisitResult.CONTINUE;
}
- }
- success = success && dir.delete();
- return success;
+
+ @Override
+ public FileVisitResult postVisitDirectory( final Path dir, final IOException exc ) throws IOException
+ {
+ Files.delete( dir );
+ return FileVisitResult.CONTINUE;
+ }
+ } );
}
public static Map<String, String> readTemplateProperties( String templateName )
{
File propertiesFile = new File( zestHome(), "etc/templates/" + templateName + "/template.properties" );
- try (InputStream in = new BufferedInputStream( new FileInputStream( propertiesFile ) ))
+ try( InputStream in = new BufferedInputStream( new FileInputStream( propertiesFile ) ) )
{
Properties properties = readProperties( in );
Map<String, String> result = new HashMap<String, String>();
@@ -100,19 +105,11 @@ public class FileUtils
throws IOException
{
System.out.println( "Creating " + dest.getAbsolutePath() );
- byte[] buffer = new byte[ 100000 ];
- try (BufferedInputStream in = new BufferedInputStream( new FileInputStream( srcFile ) ))
+ if( dest.exists() )
{
- try (BufferedOutputStream out = new BufferedOutputStream( new FileOutputStream( dest ) ))
- {
- int bytes;
- while( ( bytes = in.read( buffer ) ) != -1 )
- {
- out.write( buffer, 0, bytes );
- }
- out.flush();
- }
+ Files.delete( dest.toPath() );
}
+ Files.copy( srcFile.toPath(), dest.toPath() );
}
public static File zestHome()
http://git-wip-us.apache.org/repos/asf/zest-java/blob/e504fe4a/tools/shell/src/main/java/org/apache/zest/tools/shell/create/project/AbstractProjectCreator.java
----------------------------------------------------------------------
diff --git a/tools/shell/src/main/java/org/apache/zest/tools/shell/create/project/AbstractProjectCreator.java b/tools/shell/src/main/java/org/apache/zest/tools/shell/create/project/AbstractProjectCreator.java
index b6c7b9f..966c709 100644
--- a/tools/shell/src/main/java/org/apache/zest/tools/shell/create/project/AbstractProjectCreator.java
+++ b/tools/shell/src/main/java/org/apache/zest/tools/shell/create/project/AbstractProjectCreator.java
@@ -23,8 +23,6 @@ package org.apache.zest.tools.shell.create.project;
import java.io.File;
import java.io.IOException;
import java.nio.file.Files;
-import java.nio.file.Path;
-import java.nio.file.attribute.PosixFilePermissions;
import java.util.Map;
import org.apache.zest.tools.shell.FileUtils;
@@ -41,9 +39,6 @@ abstract class AbstractProjectCreator
{
File templateDir = new File( FileUtils.zestHome(), properties.get( "template.dir" ) );
copyFiles( templateDir, projectDir, properties.get( "root.package" ) );
- File gradlewFile = new File( projectDir, "gradlew" );
- Path gradlewPath = gradlewFile.toPath();
- setGradlewPermissions( gradlewFile, gradlewPath );
}
private void copyFiles( File fromDir, File toDir, String rootpackage )
@@ -54,7 +49,7 @@ abstract class AbstractProjectCreator
{
return;
}
- toDir.mkdirs(); // create all directories needed.
+ Files.createDirectories( toDir.toPath() );
for( File f : files )
{
String filename = f.getName();
@@ -84,23 +79,4 @@ abstract class AbstractProjectCreator
}
}
}
-
- private void setGradlewPermissions( File gradlewFile, Path gradlewPath )
- throws IOException
- {
- try
- {
- if( gradlewFile.exists() )
- {
- Files.setPosixFilePermissions( gradlewPath, PosixFilePermissions.fromString( "rwxr-xr-x" ) );
- }
- }
- catch( Exception e )
- {
- if( !System.getProperty( "os.name" ).contains( "Windows" ) )
- {
- throw new IOException( "Unable to set file permissions on " + gradlewPath.toString(), e );
- }
- }
- }
}
http://git-wip-us.apache.org/repos/asf/zest-java/blob/e504fe4a/tools/shell/src/test/java/org/apache/zest/tools/shell/FileUtilsTest.java
----------------------------------------------------------------------
diff --git a/tools/shell/src/test/java/org/apache/zest/tools/shell/FileUtilsTest.java b/tools/shell/src/test/java/org/apache/zest/tools/shell/FileUtilsTest.java
index 344c8c0..af9544a 100644
--- a/tools/shell/src/test/java/org/apache/zest/tools/shell/FileUtilsTest.java
+++ b/tools/shell/src/test/java/org/apache/zest/tools/shell/FileUtilsTest.java
@@ -21,6 +21,8 @@
package org.apache.zest.tools.shell;
import java.io.File;
+import java.io.IOException;
+import java.nio.file.Files;
import java.util.Map;
import org.junit.Test;
@@ -31,54 +33,45 @@ import static org.junit.Assert.assertThat;
public class FileUtilsTest
{
@Test
- public void createDirectoryTest()
+ public void createDirectoryTest() throws IOException
{
File f = new File( "habba-zout" );
- if( f.exists() )
- {
- FileUtils.removeDir( f );
- }
assertThat( f.exists(), equalTo( false ) );
FileUtils.createDir( "habba-zout" );
assertThat( f.exists(), equalTo( true ) );
- if( ! f.delete() ){
- System.err.println( "Unable to remove file. Why???" );
- }
+ Files.delete( f.toPath() );
assertThat( f.exists(), equalTo( false ) );
}
@Test
- public void removeDirTest() throws Exception {
- File srcFile = new File("build.gradle");
+ public void removeDirTest() throws Exception
+ {
+ File srcFile = new File( "build.gradle" );
+ Files.write( srcFile.toPath(), "Some content".getBytes() );
File f = new File( "habba-zout" );
- if( f.exists() )
- {
- FileUtils.removeDir( f );
- }
assertThat( f.exists(), equalTo( false ) );
File f1 = FileUtils.createDir( "habba-zout" );
File f2 = FileUtils.createDir( "habba-zout/src" );
File f3 = FileUtils.createDir( "habba-zout/src/main" );
File f4 = FileUtils.createDir( "habba-zout/src/test" );
File f5 = FileUtils.createDir( "habba-zout/src/main/abc" );
- FileUtils.copyFile( srcFile, new File(f1, "build.gradle__") );
- FileUtils.copyFile( srcFile, new File(f2, "build.gradle__") );
- FileUtils.copyFile( srcFile, new File(f3, "build.gradle__") );
- FileUtils.copyFile( srcFile, new File(f4, "build.gradle__") );
- FileUtils.copyFile( srcFile, new File(f5, "build.gradle__") );
- boolean success = FileUtils.removeDir( f );
- assertThat(success, equalTo(true));
- assertThat(f1.exists(), equalTo(false));
- assertThat(f2.exists(), equalTo(false));
- assertThat(f3.exists(), equalTo(false));
- assertThat(f4.exists(), equalTo(false));
- assertThat(f5.exists(), equalTo(false));
+ FileUtils.copyFile( srcFile, new File( f1, "build.gradle__" ) );
+ FileUtils.copyFile( srcFile, new File( f2, "build.gradle__" ) );
+ FileUtils.copyFile( srcFile, new File( f3, "build.gradle__" ) );
+ FileUtils.copyFile( srcFile, new File( f4, "build.gradle__" ) );
+ FileUtils.copyFile( srcFile, new File( f5, "build.gradle__" ) );
+ FileUtils.removeDir( f );
+ assertThat( f1.exists(), equalTo( false ) );
+ assertThat( f2.exists(), equalTo( false ) );
+ assertThat( f3.exists(), equalTo( false ) );
+ assertThat( f4.exists(), equalTo( false ) );
+ assertThat( f5.exists(), equalTo( false ) );
}
@Test
public void readPropertiesResourceTest()
{
- TestHelper.zetZestZome();
+ TestHelper.setZestZome();
Map<String, String> map = FileUtils.readTemplateProperties( "restapp" );
assertThat( map, notNullValue() );
assertThat( map.get( "template.dir" ), equalTo( "etc/templates/restapp/files" ) );
@@ -88,19 +81,13 @@ public class FileUtilsTest
public void copyFileTest()
throws Exception
{
- File dest = new File( "build.gradle.copy" );
- if( dest.exists() ) // from an earlier aborted run.
- {
- if( ! dest.delete() ){
- System.err.println( "Unable to remove file. Why???" );
- }
- }
File srcFile = new File( "build.gradle" );
+ Files.write( srcFile.toPath(), "Some content".getBytes() );
+ File dest = new File( "build.gradle.copy" );
+ assertThat( dest.exists(), equalTo( false ) );
FileUtils.copyFile( srcFile, dest );
assertThat( dest.exists(), equalTo( true ) );
- if( ! dest.delete() ){
- System.err.println( "Unable to remove file. Why???" );
- }
+ Files.delete( dest.toPath() );
assertThat( dest.exists(), equalTo( false ) );
}
}
http://git-wip-us.apache.org/repos/asf/zest-java/blob/e504fe4a/tools/shell/src/test/java/org/apache/zest/tools/shell/TestHelper.java
----------------------------------------------------------------------
diff --git a/tools/shell/src/test/java/org/apache/zest/tools/shell/TestHelper.java b/tools/shell/src/test/java/org/apache/zest/tools/shell/TestHelper.java
index a30109d..01d40bb 100644
--- a/tools/shell/src/test/java/org/apache/zest/tools/shell/TestHelper.java
+++ b/tools/shell/src/test/java/org/apache/zest/tools/shell/TestHelper.java
@@ -24,7 +24,7 @@ import java.io.File;
public class TestHelper
{
- public static void zetZestZome()
+ public static void setZestZome()
{
String cwd = new File( ".").getAbsolutePath();
if( cwd.endsWith( "/java/." )) // IDEA default runner
@@ -37,5 +37,10 @@ public class TestHelper
String zestHome = new File( new File(".").getAbsoluteFile(), "src/dist" ).getAbsolutePath();
System.setProperty( "zest.home", zestHome );
}
+ if( cwd.endsWith( "test/work/." ) ) // Parallel Gradle build
+ {
+ String zestHome = new File( cwd + "./../../../../src/dist" ).getAbsolutePath();
+ System.setProperty( "zest.home", zestHome );
+ }
}
}
http://git-wip-us.apache.org/repos/asf/zest-java/blob/e504fe4a/tools/shell/src/test/java/org/apache/zest/tools/shell/create/CreateProjectTest.java
----------------------------------------------------------------------
diff --git a/tools/shell/src/test/java/org/apache/zest/tools/shell/create/CreateProjectTest.java b/tools/shell/src/test/java/org/apache/zest/tools/shell/create/CreateProjectTest.java
index 882b19d..3f4159e 100644
--- a/tools/shell/src/test/java/org/apache/zest/tools/shell/create/CreateProjectTest.java
+++ b/tools/shell/src/test/java/org/apache/zest/tools/shell/create/CreateProjectTest.java
@@ -21,7 +21,7 @@
package org.apache.zest.tools.shell.create;
import java.io.File;
-import org.apache.zest.tools.shell.FileUtils;
+import java.io.IOException;
import org.apache.zest.tools.shell.HelpNeededException;
import org.apache.zest.tools.shell.TestHelper;
import org.junit.Test;
@@ -52,19 +52,14 @@ public class CreateProjectTest
}
@Test
- public void givenCommandWhenTemplateExistExpectCreatedProject()
+ public void givenCommandWhenTemplateExistExpectCreatedProject() throws IOException
{
- TestHelper.zetZestZome();
+ TestHelper.setZestZome();
File dest = new File( "ZestTest" );
new CreateProject().execute( new String[]{ "create-project", "null", "ZestTest", "org.apache.zest" }, null, null );
assertThat( dest.exists(), equalTo( true ) );
File file = new File( dest, "src/main/java/org/apache/zest/package.html" );
assertThat( file.exists(), equalTo( true ) );
- if( ! FileUtils.removeDir( dest ) )
- {
- System.err.println( "Unable to remove file. Why???" );
- }
- assertThat( dest.exists(), equalTo( false ) );
}
}
http://git-wip-us.apache.org/repos/asf/zest-java/blob/e504fe4a/tools/shell/src/test/java/org/apache/zest/tools/shell/create/project/DefaultProjectCreatorTest.java
----------------------------------------------------------------------
diff --git a/tools/shell/src/test/java/org/apache/zest/tools/shell/create/project/DefaultProjectCreatorTest.java b/tools/shell/src/test/java/org/apache/zest/tools/shell/create/project/DefaultProjectCreatorTest.java
index b269485..70a4bf1 100644
--- a/tools/shell/src/test/java/org/apache/zest/tools/shell/create/project/DefaultProjectCreatorTest.java
+++ b/tools/shell/src/test/java/org/apache/zest/tools/shell/create/project/DefaultProjectCreatorTest.java
@@ -23,13 +23,12 @@ package org.apache.zest.tools.shell.create.project;
import java.io.File;
import java.util.HashMap;
import java.util.Map;
-import org.apache.zest.tools.shell.FileUtils;
import org.apache.zest.tools.shell.TestHelper;
import org.junit.Test;
-import static org.apache.zest.tools.shell.FileUtils.removeDir;
import static org.hamcrest.core.IsEqual.equalTo;
import static org.junit.Assert.assertThat;
+import static org.junit.Assert.assertTrue;
public class DefaultProjectCreatorTest
{
@@ -40,12 +39,8 @@ public class DefaultProjectCreatorTest
throws Exception
{
- TestHelper.zetZestZome();
+ TestHelper.setZestZome();
File projectDir = new File( "ZestTest" );
- if( projectDir.exists() )
- {
- removeDir( projectDir );
- }
Map<String, String> properties = new HashMap<>();
properties.put( "zest.home", System.getProperty( "zest.home" ) );
properties.put( "root.package", "org.apache.zest.test" );
@@ -96,13 +91,9 @@ public class DefaultProjectCreatorTest
assertThat( new File( projectDir, "gradle/wrapper/gradle-wrapper.jar" ).exists(), equalTo( true ) );
assertThat( new File( projectDir, "gradle/wrapper/gradle-wrapper.properties" ).exists(), equalTo( true ) );
assertThat( new File( projectDir, "gradlew" ).exists(), equalTo( true ) );
+ assertTrue( new File( projectDir, "gradlew" ).canExecute() );
assertThat( new File( projectDir, "gradlew.bat" ).exists(), equalTo( true ) );
assertThat( new File( projectDir, "build.gradle" ).exists(), equalTo( true ) );
assertThat( new File( projectDir, "settings.gradle" ).exists(), equalTo( true ) );
- if( !FileUtils.removeDir( projectDir ) )
- {
- System.err.println( "Unable to remove file. Why???" );
- }
- assertThat( projectDir.exists(), equalTo( false ) );
}
}
http://git-wip-us.apache.org/repos/asf/zest-java/blob/e504fe4a/tools/shell/src/test/java/org/apache/zest/tools/shell/create/project/NullProjectCreatorTest.java
----------------------------------------------------------------------
diff --git a/tools/shell/src/test/java/org/apache/zest/tools/shell/create/project/NullProjectCreatorTest.java b/tools/shell/src/test/java/org/apache/zest/tools/shell/create/project/NullProjectCreatorTest.java
index e0a470a..362fa3c 100644
--- a/tools/shell/src/test/java/org/apache/zest/tools/shell/create/project/NullProjectCreatorTest.java
+++ b/tools/shell/src/test/java/org/apache/zest/tools/shell/create/project/NullProjectCreatorTest.java
@@ -23,11 +23,9 @@ package org.apache.zest.tools.shell.create.project;
import java.io.File;
import java.util.HashMap;
import java.util.Map;
-import org.apache.zest.tools.shell.FileUtils;
import org.apache.zest.tools.shell.TestHelper;
import org.junit.Test;
-import static org.apache.zest.tools.shell.FileUtils.removeDir;
import static org.hamcrest.core.IsEqual.equalTo;
import static org.junit.Assert.assertThat;
@@ -40,12 +38,8 @@ public class NullProjectCreatorTest
throws Exception
{
- TestHelper.zetZestZome();
+ TestHelper.setZestZome();
File projectDir = new File( "ZestTest" );
- if( projectDir.exists() )
- {
- removeDir( projectDir );
- }
Map<String, String> properties = new HashMap<>();
properties.put( "zest.home", System.getProperty( "zest.home" ) );
properties.put( "root.package", "org.apache.zest.test" );
@@ -57,10 +51,5 @@ public class NullProjectCreatorTest
assertThat( new File( projectDir, "gradlew" ).exists(), equalTo( true ) );
assertThat( new File( projectDir, "gradlew.bat" ).exists(), equalTo( true ) );
assertThat( new File( projectDir, "build.gradle" ).exists(), equalTo( true ) );
- if( ! FileUtils.removeDir( projectDir ) )
- {
- System.err.println( "Unable to remove file. Why???" );
- }
- assertThat( projectDir.exists(), equalTo( false ) );
}
}
http://git-wip-us.apache.org/repos/asf/zest-java/blob/e504fe4a/tools/shell/src/test/java/org/apache/zest/tools/shell/create/project/RestProjectCreatorTest.java
----------------------------------------------------------------------
diff --git a/tools/shell/src/test/java/org/apache/zest/tools/shell/create/project/RestProjectCreatorTest.java b/tools/shell/src/test/java/org/apache/zest/tools/shell/create/project/RestProjectCreatorTest.java
index e99695d..e4a37f5 100644
--- a/tools/shell/src/test/java/org/apache/zest/tools/shell/create/project/RestProjectCreatorTest.java
+++ b/tools/shell/src/test/java/org/apache/zest/tools/shell/create/project/RestProjectCreatorTest.java
@@ -23,11 +23,9 @@ package org.apache.zest.tools.shell.create.project;
import java.io.File;
import java.util.HashMap;
import java.util.Map;
-import org.apache.zest.tools.shell.FileUtils;
import org.apache.zest.tools.shell.TestHelper;
import org.junit.Test;
-import static org.apache.zest.tools.shell.FileUtils.removeDir;
import static org.hamcrest.core.IsEqual.equalTo;
import static org.junit.Assert.assertThat;
@@ -40,12 +38,8 @@ public class RestProjectCreatorTest
throws Exception
{
- TestHelper.zetZestZome();
+ TestHelper.setZestZome();
File projectDir = new File( "ZestTest" );
- if( projectDir.exists() )
- {
- removeDir( projectDir );
- }
Map<String, String> properties = new HashMap<>();
properties.put( "zest.home", System.getProperty( "zest.home" ) );
properties.put( "root.package", "org.apache.zest.test" );
@@ -110,10 +104,5 @@ public class RestProjectCreatorTest
assertThat( new File( projectDir, "gradlew.bat" ).exists(), equalTo( true ) );
assertThat( new File( projectDir, "build.gradle" ).exists(), equalTo( true ) );
assertThat( new File( projectDir, "settings.gradle" ).exists(), equalTo( true ) );
- if( ! FileUtils.removeDir( projectDir ) )
- {
- System.err.println( "Unable to remove file. Why???" );
- }
- assertThat( projectDir.exists(), equalTo( false ) );
}
}