You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@maven.apache.org by br...@apache.org on 2006/02/21 15:00:40 UTC
svn commit: r379454 - in /maven/plugins/trunk/maven-clean-plugin/src:
main/java/org/apache/maven/plugin/clean/
test/java/org/apache/maven/plugin/clean/
test/resources/testDirectoryStructure/target/
test/resources/testDirectoryStructure/target/classes/ ...
Author: brett
Date: Tue Feb 21 06:00:38 2006
New Revision: 379454
URL: http://svn.apache.org/viewcvs?rev=379454&view=rev
Log:
[MCLEAN-6] additional tests for the clean plugin. Most of these really belong in the file-management shared lib. Note the bug in the lib.
Added:
maven/plugins/trunk/maven-clean-plugin/src/test/resources/testDirectoryStructure/target/
maven/plugins/trunk/maven-clean-plugin/src/test/resources/testDirectoryStructure/target/classes/
maven/plugins/trunk/maven-clean-plugin/src/test/resources/testDirectoryStructure/target/classes/file.txt (with props)
maven/plugins/trunk/maven-clean-plugin/src/test/resources/testDirectoryStructure/target/file.txt (with props)
maven/plugins/trunk/maven-clean-plugin/src/test/resources/testDirectoryStructure/target/subdir/
maven/plugins/trunk/maven-clean-plugin/src/test/resources/testDirectoryStructure/target/subdir/file.txt (with props)
maven/plugins/trunk/maven-clean-plugin/src/test/resources/testDirectoryStructure/target/test-classes/
maven/plugins/trunk/maven-clean-plugin/src/test/resources/testDirectoryStructure/target/test-classes/file.txt (with props)
Modified:
maven/plugins/trunk/maven-clean-plugin/src/main/java/org/apache/maven/plugin/clean/CleanMojo.java
maven/plugins/trunk/maven-clean-plugin/src/test/java/org/apache/maven/plugin/clean/CleanMojoTest.java
Modified: maven/plugins/trunk/maven-clean-plugin/src/main/java/org/apache/maven/plugin/clean/CleanMojo.java
URL: http://svn.apache.org/viewcvs/maven/plugins/trunk/maven-clean-plugin/src/main/java/org/apache/maven/plugin/clean/CleanMojo.java?rev=379454&r1=379453&r2=379454&view=diff
==============================================================================
--- maven/plugins/trunk/maven-clean-plugin/src/main/java/org/apache/maven/plugin/clean/CleanMojo.java (original)
+++ maven/plugins/trunk/maven-clean-plugin/src/main/java/org/apache/maven/plugin/clean/CleanMojo.java Tue Feb 21 06:00:38 2006
@@ -24,6 +24,7 @@
import java.io.File;
import java.io.IOException;
import java.util.Iterator;
+import java.util.LinkedList;
import java.util.List;
/**
@@ -125,19 +126,29 @@
private void removeDirectory( File dir )
throws MojoExecutionException
{
- FileSet fs = new FileSet();
- fs.setDirectory( dir.getPath() );
- fs.addInclude( "**/**" );
- fs.setFollowSymlinks( followSymLinks );
-
- try
- {
- getLog().info( "Deleting directory " + dir.getAbsolutePath() );
- fileSetManager.delete( fs );
- }
- catch ( IOException e )
+ if ( dir != null )
{
- throw new MojoExecutionException( "Failed to delete directory: " + dir + ". Reason: " + e.getMessage(), e );
+ FileSet fs = new FileSet();
+ fs.setDirectory( dir.getPath() );
+ fs.addInclude( "**/**" );
+ fs.setFollowSymlinks( followSymLinks );
+
+ try
+ {
+ getLog().info( "Deleting directory " + dir.getAbsolutePath() );
+ fileSetManager.delete( fs );
+ }
+ catch ( IOException e )
+ {
+ throw new MojoExecutionException( "Failed to delete directory: " + dir + ". Reason: " + e.getMessage(),
+ e );
+ }
+ catch ( IllegalStateException e )
+ {
+ // TODO: IOException from plexus-utils should be acceptable here
+ throw new MojoExecutionException( "Failed to delete directory: " + dir + ". Reason: " + e.getMessage(),
+ e );
+ }
}
}
@@ -163,5 +174,19 @@
protected void setTestOutputDirectory( File testOutputDirectory )
{
this.testOutputDirectory = testOutputDirectory;
+ }
+
+ /**
+ * Add a fileset to the list of filesets to clean.
+ *
+ * @param fileset the fileset
+ */
+ public void addFileset( Fileset fileset )
+ {
+ if ( filesets == null )
+ {
+ filesets = new LinkedList();
+ }
+ filesets.add( fileset );
}
}
Modified: maven/plugins/trunk/maven-clean-plugin/src/test/java/org/apache/maven/plugin/clean/CleanMojoTest.java
URL: http://svn.apache.org/viewcvs/maven/plugins/trunk/maven-clean-plugin/src/test/java/org/apache/maven/plugin/clean/CleanMojoTest.java?rev=379454&r1=379453&r2=379454&view=diff
==============================================================================
--- maven/plugins/trunk/maven-clean-plugin/src/test/java/org/apache/maven/plugin/clean/CleanMojoTest.java (original)
+++ maven/plugins/trunk/maven-clean-plugin/src/test/java/org/apache/maven/plugin/clean/CleanMojoTest.java Tue Feb 21 06:00:38 2006
@@ -17,9 +17,14 @@
*/
import junit.framework.TestCase;
+import org.apache.maven.plugin.MojoExecutionException;
import org.codehaus.plexus.util.FileUtils;
+import org.codehaus.plexus.util.IOUtil;
import java.io.File;
+import java.io.FileInputStream;
+import java.io.FileNotFoundException;
+import java.util.Arrays;
/**
* Test the clean mojo.
@@ -27,36 +32,197 @@
public class CleanMojoTest
extends TestCase
{
+ private static final String TARGET_TEST_DIR = "target/testDirectoryStructure";
+
protected void setUp()
throws Exception
{
super.setUp();
FileUtils.copyDirectoryStructure( new File( "src/test/resources/testDirectoryStructure" ),
- new File( "target/test/testDirectoryStructure" ) );
+ new File( TARGET_TEST_DIR ) );
}
+ protected void tearDown()
+ throws Exception
+ {
+ super.tearDown();
+
+ FileUtils.deleteDirectory( new File( TARGET_TEST_DIR ) );
+ }
public void testClean()
throws Exception
{
+ String base = TARGET_TEST_DIR;
+ String directory = base + "/buildDirectory";
+ String outputDirectory = base + "/buildOutputDirectory";
+ String testOutputDirectory = base + "/buildTestDirectory";
+
CleanMojo mojo = new CleanMojo();
- mojo.setDirectory( new File( "target/test/testDirectoryStructure/buildDirectory" ) );
- mojo.setOutputDirectory( new File( "target/test/testDirectoryStructure/buildOutputDirectory" ) );
- mojo.setTestOutputDirectory( new File( "target/test/testDirectoryStructure/buildTestDirectory" ) );
+
+ mojo.setDirectory( new File( directory ) );
+ mojo.setOutputDirectory( new File( outputDirectory ) );
+ mojo.setTestOutputDirectory( new File( testOutputDirectory ) );
mojo.execute();
- assertFalse( FileUtils.fileExists( "target/test/testDirectoryStructure/buildDirectory" ) );
- assertFalse( FileUtils.fileExists( "target/test/testDirectoryStructure/buildOutputDirectory" ) );
- assertFalse( FileUtils.fileExists( "target/test/testDirectoryStructure/buildTestDirectory" ) );
+ assertFalse( FileUtils.fileExists( directory ) );
+ assertFalse( FileUtils.fileExists( outputDirectory ) );
+ assertFalse( FileUtils.fileExists( testOutputDirectory ) );
}
- protected void tearDown()
+ public void testNestedStructure()
throws Exception
{
- super.tearDown();
+ String base = TARGET_TEST_DIR + "/target";
+ String outputDirectory = base + "/classes";
+ String testOutputDirectory = base + "/test-classes";
+
+ CleanMojo mojo = new CleanMojo();
+
+ mojo.setDirectory( new File( base ) );
+ mojo.setOutputDirectory( new File( outputDirectory ) );
+ mojo.setTestOutputDirectory( new File( testOutputDirectory ) );
+
+ mojo.execute();
+
+ assertFalse( FileUtils.fileExists( base ) );
+ assertFalse( FileUtils.fileExists( outputDirectory ) );
+ assertFalse( FileUtils.fileExists( testOutputDirectory ) );
+ }
+
+ public void testEmptyDirectories()
+ throws Exception
+ {
+ CleanMojo mojo = new CleanMojo();
- FileUtils.deleteDirectory( new File( "target/test/testDirectoryStructure" ) );
+ mojo.execute();
+
+ // just checking no exceptions
+ assertTrue( true );
}
+
+ public void testFilesets()
+ throws Exception
+ {
+ String base = TARGET_TEST_DIR + "/target";
+
+ CleanMojo mojo = new CleanMojo();
+
+ mojo.addFileset( createFileset( base, "**/file.txt", "**/subdir/**" ) );
+
+ String outputDirectory = TARGET_TEST_DIR + "/buildOutputDirectory";
+ mojo.addFileset( createFileset( outputDirectory, "**", "" ) );
+
+ mojo.execute();
+
+ // fileset 1
+ assertTrue( FileUtils.fileExists( base ) );
+ assertTrue( FileUtils.fileExists( base + "/classes" ) );
+ assertFalse( FileUtils.fileExists( base + "/classes/file.txt" ) );
+/* TODO: looks like a bug in the file-management library
+ assertTrue( FileUtils.fileExists( base + "/subdir/file.txt" ) );
+*/
+
+ // fileset 2
+ assertTrue( FileUtils.fileExists( outputDirectory ) );
+ assertFalse( FileUtils.fileExists( outputDirectory + "/file.txt" ) );
+ }
+
+ public void testInvalidDirectory()
+ throws MojoExecutionException
+ {
+ String path = TARGET_TEST_DIR + "/target/subdir/file.txt";
+
+ CleanMojo mojo = new CleanMojo();
+ mojo.setDirectory( new File( path ) );
+
+ try
+ {
+ mojo.execute();
+
+ fail( "Should fail to delete a file treated as a directory" );
+ }
+ catch ( MojoExecutionException expected )
+ {
+ assertTrue( true );
+ }
+ }
+
+ public void testOpenFile()
+ throws MojoExecutionException, FileNotFoundException
+ {
+ String path = TARGET_TEST_DIR + "/target/subdir";
+
+ CleanMojo mojo = new CleanMojo();
+ mojo.setDirectory( new File( path ) );
+
+ FileInputStream fis = new FileInputStream( new File( path, "file.txt" ) );
+
+ try
+ {
+ mojo.execute();
+
+ fail( "Should fail to delete a file that is open" );
+ }
+ catch ( MojoExecutionException expected )
+ {
+ assertTrue( true );
+ }
+ finally
+ {
+ IOUtil.close( fis );
+ }
+ }
+
+ public void testOpenFileInFileSet()
+ throws MojoExecutionException, FileNotFoundException
+ {
+ String path = TARGET_TEST_DIR + "/target/subdir";
+
+ CleanMojo mojo = new CleanMojo();
+ mojo.addFileset( createFileset( path, "**", "" ) );
+
+ FileInputStream fis = new FileInputStream( new File( path, "file.txt" ) );
+
+ try
+ {
+ mojo.execute();
+
+ fail( "Should fail to delete a file that is open" );
+ }
+ catch ( MojoExecutionException expected )
+ {
+ assertTrue( true );
+ }
+ finally
+ {
+ IOUtil.close( fis );
+ }
+ }
+
+ public void testMissingDirectory()
+ throws MojoExecutionException
+ {
+ String path = TARGET_TEST_DIR + "/does-not-exist";
+
+ CleanMojo mojo = new CleanMojo();
+ mojo.setDirectory( new File( path ) );
+ assertFalse( FileUtils.fileExists( path ) );
+
+ mojo.execute();
+
+ assertFalse( FileUtils.fileExists( path ) );
+ }
+
+ private static Fileset createFileset( String dir, String includes, String excludes )
+ {
+ Fileset fileset = new Fileset();
+ fileset.setDirectory( dir );
+ fileset.setIncludes( Arrays.asList( new String[]{includes} ) );
+ fileset.setExcludes( Arrays.asList( new String[]{excludes} ) );
+ return fileset;
+ }
+
}
Added: maven/plugins/trunk/maven-clean-plugin/src/test/resources/testDirectoryStructure/target/classes/file.txt
URL: http://svn.apache.org/viewcvs/maven/plugins/trunk/maven-clean-plugin/src/test/resources/testDirectoryStructure/target/classes/file.txt?rev=379454&view=auto
==============================================================================
(empty)
Propchange: maven/plugins/trunk/maven-clean-plugin/src/test/resources/testDirectoryStructure/target/classes/file.txt
------------------------------------------------------------------------------
svn:eol-style = native
Propchange: maven/plugins/trunk/maven-clean-plugin/src/test/resources/testDirectoryStructure/target/classes/file.txt
------------------------------------------------------------------------------
svn:keywords = Author Date Id Revision
Added: maven/plugins/trunk/maven-clean-plugin/src/test/resources/testDirectoryStructure/target/file.txt
URL: http://svn.apache.org/viewcvs/maven/plugins/trunk/maven-clean-plugin/src/test/resources/testDirectoryStructure/target/file.txt?rev=379454&view=auto
==============================================================================
(empty)
Propchange: maven/plugins/trunk/maven-clean-plugin/src/test/resources/testDirectoryStructure/target/file.txt
------------------------------------------------------------------------------
svn:eol-style = native
Propchange: maven/plugins/trunk/maven-clean-plugin/src/test/resources/testDirectoryStructure/target/file.txt
------------------------------------------------------------------------------
svn:keywords = Author Date Id Revision
Added: maven/plugins/trunk/maven-clean-plugin/src/test/resources/testDirectoryStructure/target/subdir/file.txt
URL: http://svn.apache.org/viewcvs/maven/plugins/trunk/maven-clean-plugin/src/test/resources/testDirectoryStructure/target/subdir/file.txt?rev=379454&view=auto
==============================================================================
(empty)
Propchange: maven/plugins/trunk/maven-clean-plugin/src/test/resources/testDirectoryStructure/target/subdir/file.txt
------------------------------------------------------------------------------
svn:eol-style = native
Propchange: maven/plugins/trunk/maven-clean-plugin/src/test/resources/testDirectoryStructure/target/subdir/file.txt
------------------------------------------------------------------------------
svn:keywords = Author Date Id Revision
Added: maven/plugins/trunk/maven-clean-plugin/src/test/resources/testDirectoryStructure/target/test-classes/file.txt
URL: http://svn.apache.org/viewcvs/maven/plugins/trunk/maven-clean-plugin/src/test/resources/testDirectoryStructure/target/test-classes/file.txt?rev=379454&view=auto
==============================================================================
(empty)
Propchange: maven/plugins/trunk/maven-clean-plugin/src/test/resources/testDirectoryStructure/target/test-classes/file.txt
------------------------------------------------------------------------------
svn:eol-style = native
Propchange: maven/plugins/trunk/maven-clean-plugin/src/test/resources/testDirectoryStructure/target/test-classes/file.txt
------------------------------------------------------------------------------
svn:keywords = Author Date Id Revision