You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@maven.apache.org by mk...@apache.org on 2008/01/14 19:30:05 UTC

svn commit: r611879 - in /maven/plugins/trunk/maven-resources-plugin/src: main/java/org/apache/maven/plugin/resources/ test/java/org/apache/maven/plugin/resources/

Author: mkleint
Date: Mon Jan 14 10:30:03 2008
New Revision: 611879

URL: http://svn.apache.org/viewvc?rev=611879&view=rev
Log:
MRESOURCES-52 the output dir parameter is supposed to be java.io.File to work correctly with the -f switch or embedded use. Patch submitted by Benjamin Bentmann.

Modified:
    maven/plugins/trunk/maven-resources-plugin/src/main/java/org/apache/maven/plugin/resources/ResourcesMojo.java
    maven/plugins/trunk/maven-resources-plugin/src/main/java/org/apache/maven/plugin/resources/TestResourcesMojo.java
    maven/plugins/trunk/maven-resources-plugin/src/test/java/org/apache/maven/plugin/resources/ResourcesMojoTest.java
    maven/plugins/trunk/maven-resources-plugin/src/test/java/org/apache/maven/plugin/resources/TestResourcesTest.java

Modified: maven/plugins/trunk/maven-resources-plugin/src/main/java/org/apache/maven/plugin/resources/ResourcesMojo.java
URL: http://svn.apache.org/viewvc/maven/plugins/trunk/maven-resources-plugin/src/main/java/org/apache/maven/plugin/resources/ResourcesMojo.java?rev=611879&r1=611878&r2=611879&view=diff
==============================================================================
--- maven/plugins/trunk/maven-resources-plugin/src/main/java/org/apache/maven/plugin/resources/ResourcesMojo.java (original)
+++ maven/plugins/trunk/maven-resources-plugin/src/main/java/org/apache/maven/plugin/resources/ResourcesMojo.java Mon Jan 14 10:30:03 2008
@@ -60,7 +60,7 @@
      * @parameter expression="${project.build.outputDirectory}"
      * @required
      */
-    private String outputDirectory;
+    private File outputDirectory;
 
     /**
      * The list of resources we want to transfer.
@@ -97,7 +97,7 @@
         copyResources( resources, outputDirectory );
     }
 
-    protected void copyResources( List resources, String outputDirectory )
+    protected void copyResources( List resources, File outputDirectory )
         throws MojoExecutionException
     {
         initializeFiltering();
@@ -131,12 +131,11 @@
 
             // this part is required in case the user specified "../something" as destination
             // see MNG-1345
-            File outputDir = new File( outputDirectory );
-            if ( !outputDir.exists() )
+            if ( !outputDirectory.exists() )
             {
-                if ( !outputDir.mkdirs() )
+                if ( !outputDirectory.mkdirs() )
                 {
-                    throw new MojoExecutionException( "Cannot create resource output directory: " + outputDir );
+                    throw new MojoExecutionException( "Cannot create resource output directory: " + outputDirectory );
                 }
             }
 

Modified: maven/plugins/trunk/maven-resources-plugin/src/main/java/org/apache/maven/plugin/resources/TestResourcesMojo.java
URL: http://svn.apache.org/viewvc/maven/plugins/trunk/maven-resources-plugin/src/main/java/org/apache/maven/plugin/resources/TestResourcesMojo.java?rev=611879&r1=611878&r2=611879&view=diff
==============================================================================
--- maven/plugins/trunk/maven-resources-plugin/src/main/java/org/apache/maven/plugin/resources/TestResourcesMojo.java (original)
+++ maven/plugins/trunk/maven-resources-plugin/src/main/java/org/apache/maven/plugin/resources/TestResourcesMojo.java Mon Jan 14 10:30:03 2008
@@ -20,6 +20,8 @@
  * limitations under the License.
  */
 
+import java.io.File;
+
 /**
  * Copy resources for the test source code to the test output directory.
  * 
@@ -38,7 +40,7 @@
      * @parameter expression="${project.build.testOutputDirectory}"
      * @required
      */
-    private String outputDirectory;
+    private File outputDirectory;
 
     /**
      * The list of resources we want to transfer.

Modified: maven/plugins/trunk/maven-resources-plugin/src/test/java/org/apache/maven/plugin/resources/ResourcesMojoTest.java
URL: http://svn.apache.org/viewvc/maven/plugins/trunk/maven-resources-plugin/src/test/java/org/apache/maven/plugin/resources/ResourcesMojoTest.java?rev=611879&r1=611878&r2=611879&view=diff
==============================================================================
--- maven/plugins/trunk/maven-resources-plugin/src/test/java/org/apache/maven/plugin/resources/ResourcesMojoTest.java (original)
+++ maven/plugins/trunk/maven-resources-plugin/src/test/java/org/apache/maven/plugin/resources/ResourcesMojoTest.java Mon Jan 14 10:30:03 2008
@@ -1,465 +1,465 @@
-package org.apache.maven.plugin.resources;
-
-/*
- * Copyright 2001-2006 The Apache Software Foundation.
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-import java.io.BufferedReader;
-import java.io.File;
-import java.io.FileReader;
-import java.io.IOException;
-import java.util.LinkedList;
-import java.util.List;
-
-import org.apache.maven.plugin.resources.stub.MavenProjectResourcesStub;
-import org.apache.maven.plugin.testing.AbstractMojoTestCase;
-import org.codehaus.plexus.util.FileUtils;
-
-public class ResourcesMojoTest
-    extends AbstractMojoTestCase
-{
-    protected final static String defaultPomFilePath = "/target/test-classes/unit/resources-test/plugin-config.xml";
-
-    /**
-     * test mojo lookup, test harness should be working fine
-     *
-     * @throws Exception
-     */
-    public void testHarnessEnvironment()
-        throws Exception
-    {
-        File testPom = new File( getBasedir(), defaultPomFilePath );
-        ResourcesMojo mojo = (ResourcesMojo) lookupMojo( "resources", testPom );
-
-        assertNotNull( mojo );
-    }
-
-    /**
-     * @throws Exception
-     */
-    public void testResourceDirectoryStructure()
-        throws Exception
-    {
-        File testPom = new File( getBasedir(), defaultPomFilePath );
-        ResourcesMojo mojo = (ResourcesMojo) lookupMojo( "resources", testPom );
-        MavenProjectResourcesStub project = new MavenProjectResourcesStub( "resourceDirectoryStructure" );
-        List resources = project.getBuild().getResources();
-
-        assertNotNull( mojo );
-
-        project.addFile( "file4.txt" );
-        project.addFile( "package/file3.nottest" );
-        project.addFile( "notpackage/file1.include" );
-        project.addFile( "package/test/file1.txt" );
-        project.addFile( "notpackage/test/file2.txt" );
-        project.setupBuildEnvironment();
-
-        setVariableValueToObject( mojo, "project", project );
-        setVariableValueToObject( mojo, "resources", resources );
-        setVariableValueToObject( mojo, "outputDirectory", project.getBuild().getOutputDirectory() );
-        setVariableValueToObject( mojo, "filters", new LinkedList() );
-        mojo.execute();
-
-        String resourcesDir = project.getOutputDirectory();
-
-        assertTrue( FileUtils.fileExists( resourcesDir + "/file4.txt" ) );
-        assertTrue( FileUtils.fileExists( resourcesDir + "/package/file3.nottest" ) );
-        assertTrue( FileUtils.fileExists( resourcesDir + "/notpackage/file1.include" ) );
-        assertTrue( FileUtils.fileExists( resourcesDir + "/package/test" ) );
-        assertTrue( FileUtils.fileExists( resourcesDir + "/notpackage/test" ) );
-    }
-
-    /**
-     * @throws Exception
-     */
-    public void testResourceDirectoryStructure_RelativePath()
-        throws Exception
-    {
-        File testPom = new File( getBasedir(), defaultPomFilePath );
-        ResourcesMojo mojo = (ResourcesMojo) lookupMojo( "resources", testPom );
-        MavenProjectResourcesStub project = new MavenProjectResourcesStub( "resourceDirectoryStructure_RelativePath" );
-        List resources = project.getBuild().getResources();
-
-        assertNotNull( mojo );
-
-        project.setOutputDirectory( "../relative_dir" );
-        project.addFile( "file4.txt" );
-        project.addFile( "package/file3.nottest" );
-        project.addFile( "notpackage/file1.include" );
-        project.addFile( "package/test/file1.txt" );
-        project.addFile( "notpackage/test/file2.txt" );
-        project.setupBuildEnvironment();
-
-        setVariableValueToObject( mojo, "outputDirectory", project.getBuild().getOutputDirectory() );
-        setVariableValueToObject( mojo, "project", project );
-        setVariableValueToObject( mojo, "resources", resources );
-        setVariableValueToObject( mojo, "filters", new LinkedList() );
-        mojo.execute();
-
-        String resourcesDir = project.getOutputDirectory();
-
-        assertTrue( FileUtils.fileExists( resourcesDir + "/file4.txt" ) );
-        assertTrue( FileUtils.fileExists( resourcesDir + "/package/file3.nottest" ) );
-        assertTrue( FileUtils.fileExists( resourcesDir + "/notpackage/file1.include" ) );
-        assertTrue( FileUtils.fileExists( resourcesDir + "/package/test" ) );
-        assertTrue( FileUtils.fileExists( resourcesDir + "/notpackage/test" ) );
-    }
-
-    /**
-     * @throws Exception
-     */
-    public void testResourceEncoding()
-        throws Exception
-    {
-        File testPom = new File( getBasedir(), defaultPomFilePath );
-        ResourcesMojo mojo = (ResourcesMojo) lookupMojo( "resources", testPom );
-        MavenProjectResourcesStub project = new MavenProjectResourcesStub( "encoding" );
-        List resources = project.getBuild().getResources();
-
-        assertNotNull( mojo );
-
-        project.addFile( "file4.txt" );
-        project.setResourceFiltering( 0, true );
-        project.setupBuildEnvironment();
-
-        setVariableValueToObject( mojo, "encoding", "UTF-8" );
-        setVariableValueToObject( mojo, "project", project );
-        setVariableValueToObject( mojo, "resources", resources );
-        setVariableValueToObject( mojo, "outputDirectory", project.getBuild().getOutputDirectory() );
-        setVariableValueToObject( mojo, "filters", new LinkedList() );
-        mojo.execute();
-
-        String resourcesDir = project.getOutputDirectory();
-
-        assertTrue( FileUtils.fileExists( resourcesDir + "/file4.txt" ) );
-    }
-
-    /**
-     * @throws Exception
-     */
-    public void testResourceInclude()
-        throws Exception
-    {
-        File testPom = new File( getBasedir(), defaultPomFilePath );
-        ResourcesMojo mojo = (ResourcesMojo) lookupMojo( "resources", testPom );
-        MavenProjectResourcesStub project = new MavenProjectResourcesStub( "resourceInclude" );
-        List resources = project.getBuild().getResources();
-
-        assertNotNull( mojo );
-
-        project.addFile( "file1.include" );
-        project.addFile( "file2.exclude" );
-        project.addFile( "file3.nottest" );
-        project.addFile( "file4.txt" );
-        project.addFile( "package/file1.include" );
-        project.addFile( "package/file2.exclude" );
-        project.addFile( "package/file3.nottest" );
-        project.addFile( "package/file4.txt" );
-        project.addFile( "notpackage/file1.include" );
-        project.addFile( "notpackage/file2.exclude" );
-        project.addFile( "notpackage/file3.nottest" );
-        project.addFile( "notpackage/file4.txt" );
-        project.addFile( "package/test/file1.txt" );
-        project.addFile( "package/nottest/file2.txt" );
-        project.addFile( "notpackage/test/file1.txt" );
-        project.addFile( "notpackage/nottest/file.txt" );
-        project.setupBuildEnvironment();
-
-        project.addInclude( "*.include" );
-        project.addInclude( "**/test" );
-        project.addInclude( "**/test/file*" );
-        project.addInclude( "**/package/*.include" );
-
-        setVariableValueToObject( mojo, "outputDirectory", project.getBuild().getOutputDirectory() );
-        setVariableValueToObject( mojo, "project", project );
-        setVariableValueToObject( mojo, "resources", resources );
-        setVariableValueToObject( mojo, "filters", new LinkedList() );
-        mojo.execute();
-
-        String resourcesDir = project.getOutputDirectory();
-
-        assertTrue( FileUtils.fileExists( resourcesDir + "/package/test" ) );
-        assertTrue( FileUtils.fileExists( resourcesDir + "/file1.include" ) );
-        assertTrue( FileUtils.fileExists( resourcesDir + "/package/file1.include" ) );
-        assertFalse( FileUtils.fileExists( resourcesDir + "/notpackage/file1.include" ) );
-        assertFalse( FileUtils.fileExists( resourcesDir + "/notpackage/nottest/file.txt" ) );
-    }
-
-    /**
-     * @throws Exception
-     */
-    public void testResourceExclude()
-        throws Exception
-    {
-        File testPom = new File( getBasedir(), defaultPomFilePath );
-        ResourcesMojo mojo = (ResourcesMojo) lookupMojo( "resources", testPom );
-        MavenProjectResourcesStub project = new MavenProjectResourcesStub( "resourceExclude" );
-        List resources = project.getBuild().getResources();
-        ;
-
-        assertNotNull( mojo );
-
-        project.addFile( "file1.include" );
-        project.addFile( "file2.exclude" );
-        project.addFile( "file3.nottest" );
-        project.addFile( "file4.txt" );
-        project.addFile( "package/file1.include" );
-        project.addFile( "package/file2.exclude" );
-        project.addFile( "package/file3.nottest" );
-        project.addFile( "package/file4.txt" );
-        project.addFile( "notpackage/file1.include" );
-        project.addFile( "notpackage/file2.exclude" );
-        project.addFile( "notpackage/file3.nottest" );
-        project.addFile( "notpackage/file4.txt" );
-        project.addFile( "package/test/file1.txt" );
-        project.addFile( "package/nottest/file2.txt" );
-        project.addFile( "notpackage/test/file1.txt" );
-        project.addFile( "notpackage/nottest/file.txt" );
-        project.setupBuildEnvironment();
-
-        project.addExclude( "**/*.exclude" );
-        project.addExclude( "**/nottest*" );
-        project.addExclude( "**/notest" );
-        project.addExclude( "**/notpackage*" );
-        project.addExclude( "**/notpackage*/**" );
-
-        setVariableValueToObject( mojo, "outputDirectory", project.getBuild().getOutputDirectory() );
-        setVariableValueToObject( mojo, "project", project );
-        setVariableValueToObject( mojo, "resources", resources );
-        setVariableValueToObject( mojo, "filters", new LinkedList() );
-        mojo.execute();
-
-        String resourcesDir = project.getOutputDirectory();
-
-        assertTrue( FileUtils.fileExists( resourcesDir + "/package/test" ) );
-        assertTrue( FileUtils.fileExists( resourcesDir + "/file1.include" ) );
-        assertTrue( FileUtils.fileExists( resourcesDir + "/package/file1.include" ) );
-        assertFalse( FileUtils.fileExists( resourcesDir + "/notpackage/file1.include" ) );
-        assertFalse( FileUtils.fileExists( resourcesDir + "/notpackage/nottest/file.txt" ) );
-    }
-
-    /**
-     * @throws Exception
-     */
-    public void testResourceTargetPath()
-        throws Exception
-    {
-        File testPom = new File( getBasedir(), defaultPomFilePath );
-        ResourcesMojo mojo = (ResourcesMojo) lookupMojo( "resources", testPom );
-        MavenProjectResourcesStub project = new MavenProjectResourcesStub( "resourceTargetPath" );
-        List resources = project.getBuild().getResources();
-
-        assertNotNull( mojo );
-
-        project.setTargetPath( "org/apache/maven/plugin/test" );
-
-        project.addFile( "file4.txt" );
-        project.addFile( "package/file3.nottest" );
-        project.addFile( "notpackage/file1.include" );
-        project.addFile( "package/test/file1.txt" );
-        project.addFile( "notpackage/test/file2.txt" );
-        project.setupBuildEnvironment();
-
-        setVariableValueToObject( mojo, "outputDirectory", project.getBuild().getOutputDirectory() );
-        setVariableValueToObject( mojo, "project", project );
-        setVariableValueToObject( mojo, "resources", resources );
-        setVariableValueToObject( mojo, "filters", new LinkedList() );
-        mojo.execute();
-
-        String resourcesDir = project.getOutputDirectory();
-
-        assertTrue( FileUtils.fileExists( resourcesDir + "/org/apache/maven/plugin/test/file4.txt" ) );
-        assertTrue( FileUtils.fileExists( resourcesDir + "/org/apache/maven/plugin/test/package/file3.nottest" ) );
-        assertTrue( FileUtils.fileExists( resourcesDir + "/org/apache/maven/plugin/test/notpackage/file1.include" ) );
-        assertTrue( FileUtils.fileExists( resourcesDir + "/org/apache/maven/plugin/test/package/test" ) );
-        assertTrue( FileUtils.fileExists( resourcesDir + "/org/apache/maven/plugin/test/notpackage/test" ) );
-    }
-
-    /**
-     * @throws Exception
-     */
-    public void testResourceSystemProperties_Filtering()
-        throws Exception
-    {
-        File testPom = new File( getBasedir(), defaultPomFilePath );
-        ResourcesMojo mojo = (ResourcesMojo) lookupMojo( "resources", testPom );
-        MavenProjectResourcesStub project = new MavenProjectResourcesStub( "resourceSystemProperties_Filtering" );
-        List resources = project.getBuild().getResources();
-
-        assertNotNull( mojo );
-
-        project.addFile( "file4.txt", "current working directory = ${user.dir}" );
-        project.setResourceFiltering( 0, true );
-        project.setupBuildEnvironment();
-
-        //setVariableValueToObject(mojo,"encoding","UTF-8");
-        setVariableValueToObject( mojo, "project", project );
-        setVariableValueToObject( mojo, "resources", resources );
-        setVariableValueToObject( mojo, "outputDirectory", project.getBuild().getOutputDirectory() );
-        setVariableValueToObject( mojo, "filters", new LinkedList() );
-        mojo.execute();
-
-        String resourcesDir = project.getOutputDirectory();
-        String checkString = "current working directory = " + (String) System.getProperty( "user.dir" );
-
-        assertContent( resourcesDir + "/file4.txt", checkString );
-    }
-
-    /**
-     * @throws Exception
-     */
-    public void testResourceProjectProperties_Filtering()
-        throws Exception
-    {
-        File testPom = new File( getBasedir(), defaultPomFilePath );
-        ResourcesMojo mojo = (ResourcesMojo) lookupMojo( "resources", testPom );
-        MavenProjectResourcesStub project = new MavenProjectResourcesStub( "resourceProjectProperties_Filtering" );
-        List resources = project.getBuild().getResources();
-
-        assertNotNull( mojo );
-
-        project.addFile( "file4.txt", "current working directory = ${user.dir}" );
-        project.setResourceFiltering( 0, true );
-        project.addProperty( "user.dir", "FPJ kami!!!" );
-        project.setupBuildEnvironment();
-
-        //setVariableValueToObject(mojo,"encoding","UTF-8");
-        setVariableValueToObject( mojo, "project", project );
-        setVariableValueToObject( mojo, "resources", resources );
-        setVariableValueToObject( mojo, "outputDirectory", project.getBuild().getOutputDirectory() );
-        setVariableValueToObject( mojo, "filters", new LinkedList() );
-        mojo.execute();
-
-        String resourcesDir = project.getOutputDirectory();
-        String checkString = "current working directory = FPJ kami!!!";
-
-        assertContent( resourcesDir + "/file4.txt", checkString );
-    }
-
-    /**
-     * @throws Exception
-     */
-    public void testProjectProperty_Filtering_PropertyDestination()
-        throws Exception
-    {
-        File testPom = new File( getBasedir(), defaultPomFilePath );
-        ResourcesMojo mojo = (ResourcesMojo) lookupMojo( "resources", testPom );
-        MavenProjectResourcesStub project =
-            new MavenProjectResourcesStub( "resourcePojectProperty_Filtering_PropertyDestination" );
-        List resources = project.getBuild().getResources();
-
-        assertNotNull( mojo );
-
-        project.addFile( "file4.properties", "current working directory=${description}" );
-        project.setResourceFiltering( 0, true );
-        project.setupBuildEnvironment();
-
-        // setup dummy property
-        project.setDescription( "c:\\\\org\\apache\\test" );
-
-        //setVariableValueToObject(mojo,"encoding","UTF-8");
-        setVariableValueToObject( mojo, "project", project );
-        setVariableValueToObject( mojo, "resources", resources );
-        setVariableValueToObject( mojo, "outputDirectory", project.getBuild().getOutputDirectory() );
-        setVariableValueToObject( mojo, "filters", new LinkedList() );
-        mojo.execute();
-
-        String resourcesDir = project.getOutputDirectory();
-        String checkString = "current working directory=c\\:\\\\\\\\org\\\\apache\\\\test";
-
-        assertContent( resourcesDir + "/file4.properties", checkString );
-    }
-
-    /**
-     * @throws Exception
-     */
-    public void testPropertyFiles_Filtering()
-        throws Exception
-    {
-        File testPom = new File( getBasedir(), defaultPomFilePath );
-        ResourcesMojo mojo = (ResourcesMojo) lookupMojo( "resources", testPom );
-        MavenProjectResourcesStub project = new MavenProjectResourcesStub( "resourcePropertyFiles_Filtering" );
-        List resources = project.getBuild().getResources();
-        LinkedList filterList = new LinkedList();
-
-        assertNotNull( mojo );
-
-        project.addFile( "file4.properties", "current working directory=${dir}" );
-        project.addFile( "filter.properties", "dir:testdir" );
-        project.setResourceFiltering( 0, true );
-        project.setupBuildEnvironment();
-        filterList.add( project.getResourcesDirectory() + "filter.properties" );
-
-        //setVariableValueToObject(mojo,"encoding","UTF-8");
-        setVariableValueToObject( mojo, "project", project );
-        setVariableValueToObject( mojo, "resources", resources );
-        setVariableValueToObject( mojo, "outputDirectory", project.getBuild().getOutputDirectory() );
-        setVariableValueToObject( mojo, "filters", filterList );
-        mojo.execute();
-
-        String resourcesDir = project.getOutputDirectory();
-        String checkString = "current working directory=testdir";
-
-        assertContent( resourcesDir + "/file4.properties", checkString );
-    }
-
-    /**
-     * Validates that a Filter token containing a project property will be
-     * resolved before the Filter is applied to the resources.
-     * 
-     * @throws Exception
-     */
-    public void testPropertyFiles_Filtering_TokensInFilters() 
-        throws Exception
-    {
-        final File testPom = new File(getBasedir(), defaultPomFilePath);
-        final ResourcesMojo mojo = (ResourcesMojo) lookupMojo("resources", testPom);
-        final MavenProjectResourcesStub project = new MavenProjectResourcesStub(
-                "resourcePropertyFiles_Filtering_TokensInFilters");
-        final List resources = project.getBuild().getResources();
-        final LinkedList filterList = new LinkedList();
-
-        assertNotNull(mojo);
-
-        project.addFile("file4.properties", "current working directory=${filter.token}");
-        project.addFile("filter.properties", "filter.token=${pom-property}");
-        project.setResourceFiltering(0, true);
-        project.addProperty("pom-property", "foobar");
-        project.setupBuildEnvironment();
-        filterList.add(project.getResourcesDirectory() + "filter.properties");
-
-        // setVariableValueToObject(mojo,"encoding","UTF-8");
-        setVariableValueToObject(mojo, "project", project);
-        setVariableValueToObject(mojo, "resources", resources);
-        setVariableValueToObject(mojo, "outputDirectory", project.getBuild().getOutputDirectory());
-        setVariableValueToObject(mojo, "filters", filterList);
-        mojo.execute();
-        final String resourcesDir = project.getOutputDirectory();
-        final String checkString = "current working directory=foobar";
-
-        assertContent(resourcesDir + "/file4.properties", checkString);
-    }    
-    
-    /**
-     * Ensures the file exists and its first line equals the given data.
-     */
-    private void assertContent( String fileName, String data )
-        throws IOException
-    {
-        assertTrue( FileUtils.fileExists( fileName ) );
-
-        assertEquals( data, new BufferedReader( new FileReader( fileName ) ).readLine() );
-    }
-}
+package org.apache.maven.plugin.resources;
+
+/*
+ * Copyright 2001-2006 The Apache Software Foundation.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+import java.io.BufferedReader;
+import java.io.File;
+import java.io.FileReader;
+import java.io.IOException;
+import java.util.LinkedList;
+import java.util.List;
+
+import org.apache.maven.plugin.resources.stub.MavenProjectResourcesStub;
+import org.apache.maven.plugin.testing.AbstractMojoTestCase;
+import org.codehaus.plexus.util.FileUtils;
+
+public class ResourcesMojoTest
+    extends AbstractMojoTestCase
+{
+    protected final static String defaultPomFilePath = "/target/test-classes/unit/resources-test/plugin-config.xml";
+
+    /**
+     * test mojo lookup, test harness should be working fine
+     *
+     * @throws Exception
+     */
+    public void testHarnessEnvironment()
+        throws Exception
+    {
+        File testPom = new File( getBasedir(), defaultPomFilePath );
+        ResourcesMojo mojo = (ResourcesMojo) lookupMojo( "resources", testPom );
+
+        assertNotNull( mojo );
+    }
+
+    /**
+     * @throws Exception
+     */
+    public void testResourceDirectoryStructure()
+        throws Exception
+    {
+        File testPom = new File( getBasedir(), defaultPomFilePath );
+        ResourcesMojo mojo = (ResourcesMojo) lookupMojo( "resources", testPom );
+        MavenProjectResourcesStub project = new MavenProjectResourcesStub( "resourceDirectoryStructure" );
+        List resources = project.getBuild().getResources();
+
+        assertNotNull( mojo );
+
+        project.addFile( "file4.txt" );
+        project.addFile( "package/file3.nottest" );
+        project.addFile( "notpackage/file1.include" );
+        project.addFile( "package/test/file1.txt" );
+        project.addFile( "notpackage/test/file2.txt" );
+        project.setupBuildEnvironment();
+
+        setVariableValueToObject( mojo, "project", project );
+        setVariableValueToObject( mojo, "resources", resources );
+        setVariableValueToObject( mojo, "outputDirectory", new File( project.getBuild().getOutputDirectory() ) );
+        setVariableValueToObject( mojo, "filters", new LinkedList() );
+        mojo.execute();
+
+        String resourcesDir = project.getOutputDirectory();
+
+        assertTrue( FileUtils.fileExists( resourcesDir + "/file4.txt" ) );
+        assertTrue( FileUtils.fileExists( resourcesDir + "/package/file3.nottest" ) );
+        assertTrue( FileUtils.fileExists( resourcesDir + "/notpackage/file1.include" ) );
+        assertTrue( FileUtils.fileExists( resourcesDir + "/package/test" ) );
+        assertTrue( FileUtils.fileExists( resourcesDir + "/notpackage/test" ) );
+    }
+
+    /**
+     * @throws Exception
+     */
+    public void testResourceDirectoryStructure_RelativePath()
+        throws Exception
+    {
+        File testPom = new File( getBasedir(), defaultPomFilePath );
+        ResourcesMojo mojo = (ResourcesMojo) lookupMojo( "resources", testPom );
+        MavenProjectResourcesStub project = new MavenProjectResourcesStub( "resourceDirectoryStructure_RelativePath" );
+        List resources = project.getBuild().getResources();
+
+        assertNotNull( mojo );
+
+        project.setOutputDirectory( "../relative_dir" );
+        project.addFile( "file4.txt" );
+        project.addFile( "package/file3.nottest" );
+        project.addFile( "notpackage/file1.include" );
+        project.addFile( "package/test/file1.txt" );
+        project.addFile( "notpackage/test/file2.txt" );
+        project.setupBuildEnvironment();
+
+        setVariableValueToObject( mojo, "outputDirectory", new File( project.getBuild().getOutputDirectory() ) );
+        setVariableValueToObject( mojo, "project", project );
+        setVariableValueToObject( mojo, "resources", resources );
+        setVariableValueToObject( mojo, "filters", new LinkedList() );
+        mojo.execute();
+
+        String resourcesDir = project.getOutputDirectory();
+
+        assertTrue( FileUtils.fileExists( resourcesDir + "/file4.txt" ) );
+        assertTrue( FileUtils.fileExists( resourcesDir + "/package/file3.nottest" ) );
+        assertTrue( FileUtils.fileExists( resourcesDir + "/notpackage/file1.include" ) );
+        assertTrue( FileUtils.fileExists( resourcesDir + "/package/test" ) );
+        assertTrue( FileUtils.fileExists( resourcesDir + "/notpackage/test" ) );
+    }
+
+    /**
+     * @throws Exception
+     */
+    public void testResourceEncoding()
+        throws Exception
+    {
+        File testPom = new File( getBasedir(), defaultPomFilePath );
+        ResourcesMojo mojo = (ResourcesMojo) lookupMojo( "resources", testPom );
+        MavenProjectResourcesStub project = new MavenProjectResourcesStub( "encoding" );
+        List resources = project.getBuild().getResources();
+
+        assertNotNull( mojo );
+
+        project.addFile( "file4.txt" );
+        project.setResourceFiltering( 0, true );
+        project.setupBuildEnvironment();
+
+        setVariableValueToObject( mojo, "encoding", "UTF-8" );
+        setVariableValueToObject( mojo, "project", project );
+        setVariableValueToObject( mojo, "resources", resources );
+        setVariableValueToObject( mojo, "outputDirectory", new File( project.getBuild().getOutputDirectory() ) );
+        setVariableValueToObject( mojo, "filters", new LinkedList() );
+        mojo.execute();
+
+        String resourcesDir = project.getOutputDirectory();
+
+        assertTrue( FileUtils.fileExists( resourcesDir + "/file4.txt" ) );
+    }
+
+    /**
+     * @throws Exception
+     */
+    public void testResourceInclude()
+        throws Exception
+    {
+        File testPom = new File( getBasedir(), defaultPomFilePath );
+        ResourcesMojo mojo = (ResourcesMojo) lookupMojo( "resources", testPom );
+        MavenProjectResourcesStub project = new MavenProjectResourcesStub( "resourceInclude" );
+        List resources = project.getBuild().getResources();
+
+        assertNotNull( mojo );
+
+        project.addFile( "file1.include" );
+        project.addFile( "file2.exclude" );
+        project.addFile( "file3.nottest" );
+        project.addFile( "file4.txt" );
+        project.addFile( "package/file1.include" );
+        project.addFile( "package/file2.exclude" );
+        project.addFile( "package/file3.nottest" );
+        project.addFile( "package/file4.txt" );
+        project.addFile( "notpackage/file1.include" );
+        project.addFile( "notpackage/file2.exclude" );
+        project.addFile( "notpackage/file3.nottest" );
+        project.addFile( "notpackage/file4.txt" );
+        project.addFile( "package/test/file1.txt" );
+        project.addFile( "package/nottest/file2.txt" );
+        project.addFile( "notpackage/test/file1.txt" );
+        project.addFile( "notpackage/nottest/file.txt" );
+        project.setupBuildEnvironment();
+
+        project.addInclude( "*.include" );
+        project.addInclude( "**/test" );
+        project.addInclude( "**/test/file*" );
+        project.addInclude( "**/package/*.include" );
+
+        setVariableValueToObject( mojo, "outputDirectory", new File( project.getBuild().getOutputDirectory() ) );
+        setVariableValueToObject( mojo, "project", project );
+        setVariableValueToObject( mojo, "resources", resources );
+        setVariableValueToObject( mojo, "filters", new LinkedList() );
+        mojo.execute();
+
+        String resourcesDir = project.getOutputDirectory();
+
+        assertTrue( FileUtils.fileExists( resourcesDir + "/package/test" ) );
+        assertTrue( FileUtils.fileExists( resourcesDir + "/file1.include" ) );
+        assertTrue( FileUtils.fileExists( resourcesDir + "/package/file1.include" ) );
+        assertFalse( FileUtils.fileExists( resourcesDir + "/notpackage/file1.include" ) );
+        assertFalse( FileUtils.fileExists( resourcesDir + "/notpackage/nottest/file.txt" ) );
+    }
+
+    /**
+     * @throws Exception
+     */
+    public void testResourceExclude()
+        throws Exception
+    {
+        File testPom = new File( getBasedir(), defaultPomFilePath );
+        ResourcesMojo mojo = (ResourcesMojo) lookupMojo( "resources", testPom );
+        MavenProjectResourcesStub project = new MavenProjectResourcesStub( "resourceExclude" );
+        List resources = project.getBuild().getResources();
+        ;
+
+        assertNotNull( mojo );
+
+        project.addFile( "file1.include" );
+        project.addFile( "file2.exclude" );
+        project.addFile( "file3.nottest" );
+        project.addFile( "file4.txt" );
+        project.addFile( "package/file1.include" );
+        project.addFile( "package/file2.exclude" );
+        project.addFile( "package/file3.nottest" );
+        project.addFile( "package/file4.txt" );
+        project.addFile( "notpackage/file1.include" );
+        project.addFile( "notpackage/file2.exclude" );
+        project.addFile( "notpackage/file3.nottest" );
+        project.addFile( "notpackage/file4.txt" );
+        project.addFile( "package/test/file1.txt" );
+        project.addFile( "package/nottest/file2.txt" );
+        project.addFile( "notpackage/test/file1.txt" );
+        project.addFile( "notpackage/nottest/file.txt" );
+        project.setupBuildEnvironment();
+
+        project.addExclude( "**/*.exclude" );
+        project.addExclude( "**/nottest*" );
+        project.addExclude( "**/notest" );
+        project.addExclude( "**/notpackage*" );
+        project.addExclude( "**/notpackage*/**" );
+
+        setVariableValueToObject( mojo, "outputDirectory", new File( project.getBuild().getOutputDirectory() ) );
+        setVariableValueToObject( mojo, "project", project );
+        setVariableValueToObject( mojo, "resources", resources );
+        setVariableValueToObject( mojo, "filters", new LinkedList() );
+        mojo.execute();
+
+        String resourcesDir = project.getOutputDirectory();
+
+        assertTrue( FileUtils.fileExists( resourcesDir + "/package/test" ) );
+        assertTrue( FileUtils.fileExists( resourcesDir + "/file1.include" ) );
+        assertTrue( FileUtils.fileExists( resourcesDir + "/package/file1.include" ) );
+        assertFalse( FileUtils.fileExists( resourcesDir + "/notpackage/file1.include" ) );
+        assertFalse( FileUtils.fileExists( resourcesDir + "/notpackage/nottest/file.txt" ) );
+    }
+
+    /**
+     * @throws Exception
+     */
+    public void testResourceTargetPath()
+        throws Exception
+    {
+        File testPom = new File( getBasedir(), defaultPomFilePath );
+        ResourcesMojo mojo = (ResourcesMojo) lookupMojo( "resources", testPom );
+        MavenProjectResourcesStub project = new MavenProjectResourcesStub( "resourceTargetPath" );
+        List resources = project.getBuild().getResources();
+
+        assertNotNull( mojo );
+
+        project.setTargetPath( "org/apache/maven/plugin/test" );
+
+        project.addFile( "file4.txt" );
+        project.addFile( "package/file3.nottest" );
+        project.addFile( "notpackage/file1.include" );
+        project.addFile( "package/test/file1.txt" );
+        project.addFile( "notpackage/test/file2.txt" );
+        project.setupBuildEnvironment();
+
+        setVariableValueToObject( mojo, "outputDirectory", new File( project.getBuild().getOutputDirectory() ) );
+        setVariableValueToObject( mojo, "project", project );
+        setVariableValueToObject( mojo, "resources", resources );
+        setVariableValueToObject( mojo, "filters", new LinkedList() );
+        mojo.execute();
+
+        String resourcesDir = project.getOutputDirectory();
+
+        assertTrue( FileUtils.fileExists( resourcesDir + "/org/apache/maven/plugin/test/file4.txt" ) );
+        assertTrue( FileUtils.fileExists( resourcesDir + "/org/apache/maven/plugin/test/package/file3.nottest" ) );
+        assertTrue( FileUtils.fileExists( resourcesDir + "/org/apache/maven/plugin/test/notpackage/file1.include" ) );
+        assertTrue( FileUtils.fileExists( resourcesDir + "/org/apache/maven/plugin/test/package/test" ) );
+        assertTrue( FileUtils.fileExists( resourcesDir + "/org/apache/maven/plugin/test/notpackage/test" ) );
+    }
+
+    /**
+     * @throws Exception
+     */
+    public void testResourceSystemProperties_Filtering()
+        throws Exception
+    {
+        File testPom = new File( getBasedir(), defaultPomFilePath );
+        ResourcesMojo mojo = (ResourcesMojo) lookupMojo( "resources", testPom );
+        MavenProjectResourcesStub project = new MavenProjectResourcesStub( "resourceSystemProperties_Filtering" );
+        List resources = project.getBuild().getResources();
+
+        assertNotNull( mojo );
+
+        project.addFile( "file4.txt", "current working directory = ${user.dir}" );
+        project.setResourceFiltering( 0, true );
+        project.setupBuildEnvironment();
+
+        //setVariableValueToObject(mojo,"encoding","UTF-8");
+        setVariableValueToObject( mojo, "project", project );
+        setVariableValueToObject( mojo, "resources", resources );
+        setVariableValueToObject( mojo, "outputDirectory", new File( project.getBuild().getOutputDirectory() ) );
+        setVariableValueToObject( mojo, "filters", new LinkedList() );
+        mojo.execute();
+
+        String resourcesDir = project.getOutputDirectory();
+        String checkString = "current working directory = " + (String) System.getProperty( "user.dir" );
+
+        assertContent( resourcesDir + "/file4.txt", checkString );
+    }
+
+    /**
+     * @throws Exception
+     */
+    public void testResourceProjectProperties_Filtering()
+        throws Exception
+    {
+        File testPom = new File( getBasedir(), defaultPomFilePath );
+        ResourcesMojo mojo = (ResourcesMojo) lookupMojo( "resources", testPom );
+        MavenProjectResourcesStub project = new MavenProjectResourcesStub( "resourceProjectProperties_Filtering" );
+        List resources = project.getBuild().getResources();
+
+        assertNotNull( mojo );
+
+        project.addFile( "file4.txt", "current working directory = ${user.dir}" );
+        project.setResourceFiltering( 0, true );
+        project.addProperty( "user.dir", "FPJ kami!!!" );
+        project.setupBuildEnvironment();
+
+        //setVariableValueToObject(mojo,"encoding","UTF-8");
+        setVariableValueToObject( mojo, "project", project );
+        setVariableValueToObject( mojo, "resources", resources );
+        setVariableValueToObject( mojo, "outputDirectory", new File( project.getBuild().getOutputDirectory() ) );
+        setVariableValueToObject( mojo, "filters", new LinkedList() );
+        mojo.execute();
+
+        String resourcesDir = project.getOutputDirectory();
+        String checkString = "current working directory = FPJ kami!!!";
+
+        assertContent( resourcesDir + "/file4.txt", checkString );
+    }
+
+    /**
+     * @throws Exception
+     */
+    public void testProjectProperty_Filtering_PropertyDestination()
+        throws Exception
+    {
+        File testPom = new File( getBasedir(), defaultPomFilePath );
+        ResourcesMojo mojo = (ResourcesMojo) lookupMojo( "resources", testPom );
+        MavenProjectResourcesStub project =
+            new MavenProjectResourcesStub( "resourcePojectProperty_Filtering_PropertyDestination" );
+        List resources = project.getBuild().getResources();
+
+        assertNotNull( mojo );
+
+        project.addFile( "file4.properties", "current working directory=${description}" );
+        project.setResourceFiltering( 0, true );
+        project.setupBuildEnvironment();
+
+        // setup dummy property
+        project.setDescription( "c:\\\\org\\apache\\test" );
+
+        //setVariableValueToObject(mojo,"encoding","UTF-8");
+        setVariableValueToObject( mojo, "project", project );
+        setVariableValueToObject( mojo, "resources", resources );
+        setVariableValueToObject( mojo, "outputDirectory", new File( project.getBuild().getOutputDirectory() ) );
+        setVariableValueToObject( mojo, "filters", new LinkedList() );
+        mojo.execute();
+
+        String resourcesDir = project.getOutputDirectory();
+        String checkString = "current working directory=c\\:\\\\\\\\org\\\\apache\\\\test";
+
+        assertContent( resourcesDir + "/file4.properties", checkString );
+    }
+
+    /**
+     * @throws Exception
+     */
+    public void testPropertyFiles_Filtering()
+        throws Exception
+    {
+        File testPom = new File( getBasedir(), defaultPomFilePath );
+        ResourcesMojo mojo = (ResourcesMojo) lookupMojo( "resources", testPom );
+        MavenProjectResourcesStub project = new MavenProjectResourcesStub( "resourcePropertyFiles_Filtering" );
+        List resources = project.getBuild().getResources();
+        LinkedList filterList = new LinkedList();
+
+        assertNotNull( mojo );
+
+        project.addFile( "file4.properties", "current working directory=${dir}" );
+        project.addFile( "filter.properties", "dir:testdir" );
+        project.setResourceFiltering( 0, true );
+        project.setupBuildEnvironment();
+        filterList.add( project.getResourcesDirectory() + "filter.properties" );
+
+        //setVariableValueToObject(mojo,"encoding","UTF-8");
+        setVariableValueToObject( mojo, "project", project );
+        setVariableValueToObject( mojo, "resources", resources );
+        setVariableValueToObject( mojo, "outputDirectory", new File( project.getBuild().getOutputDirectory() ) );
+        setVariableValueToObject( mojo, "filters", filterList );
+        mojo.execute();
+
+        String resourcesDir = project.getOutputDirectory();
+        String checkString = "current working directory=testdir";
+
+        assertContent( resourcesDir + "/file4.properties", checkString );
+    }
+
+    /**
+     * Validates that a Filter token containing a project property will be
+     * resolved before the Filter is applied to the resources.
+     * 
+     * @throws Exception
+     */
+    public void testPropertyFiles_Filtering_TokensInFilters() 
+        throws Exception
+    {
+        final File testPom = new File(getBasedir(), defaultPomFilePath);
+        final ResourcesMojo mojo = (ResourcesMojo) lookupMojo("resources", testPom);
+        final MavenProjectResourcesStub project = new MavenProjectResourcesStub(
+                "resourcePropertyFiles_Filtering_TokensInFilters");
+        final List resources = project.getBuild().getResources();
+        final LinkedList filterList = new LinkedList();
+
+        assertNotNull(mojo);
+
+        project.addFile("file4.properties", "current working directory=${filter.token}");
+        project.addFile("filter.properties", "filter.token=${pom-property}");
+        project.setResourceFiltering(0, true);
+        project.addProperty("pom-property", "foobar");
+        project.setupBuildEnvironment();
+        filterList.add(project.getResourcesDirectory() + "filter.properties");
+
+        // setVariableValueToObject(mojo,"encoding","UTF-8");
+        setVariableValueToObject(mojo, "project", project);
+        setVariableValueToObject(mojo, "resources", resources);
+        setVariableValueToObject(mojo, "outputDirectory", new File( project.getBuild().getOutputDirectory() ) );
+        setVariableValueToObject(mojo, "filters", filterList);
+        mojo.execute();
+        final String resourcesDir = project.getOutputDirectory();
+        final String checkString = "current working directory=foobar";
+
+        assertContent(resourcesDir + "/file4.properties", checkString);
+    }    
+    
+    /**
+     * Ensures the file exists and its first line equals the given data.
+     */
+    private void assertContent( String fileName, String data )
+        throws IOException
+    {
+        assertTrue( FileUtils.fileExists( fileName ) );
+
+        assertEquals( data, new BufferedReader( new FileReader( fileName ) ).readLine() );
+    }
+}

Modified: maven/plugins/trunk/maven-resources-plugin/src/test/java/org/apache/maven/plugin/resources/TestResourcesTest.java
URL: http://svn.apache.org/viewvc/maven/plugins/trunk/maven-resources-plugin/src/test/java/org/apache/maven/plugin/resources/TestResourcesTest.java?rev=611879&r1=611878&r2=611879&view=diff
==============================================================================
--- maven/plugins/trunk/maven-resources-plugin/src/test/java/org/apache/maven/plugin/resources/TestResourcesTest.java (original)
+++ maven/plugins/trunk/maven-resources-plugin/src/test/java/org/apache/maven/plugin/resources/TestResourcesTest.java Mon Jan 14 10:30:03 2008
@@ -1,91 +1,91 @@
-package org.apache.maven.plugin.resources;
-
-/*
- * Copyright 2001-2006 The Apache Software Foundation.
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-import java.io.File;
-import java.util.LinkedList;
-import java.util.List;
-
-import org.apache.maven.plugin.resources.stub.MavenProjectResourcesStub;
-import org.apache.maven.plugin.testing.AbstractMojoTestCase;
-import org.codehaus.plexus.util.FileUtils;
-
-public class TestResourcesTest
-    extends AbstractMojoTestCase
-{
-    protected final static String defaultPomFilePath = "/target/test-classes/unit/resources-test/plugin-config.xml";
-
-    protected void setUp()
-        throws Exception
-    {
-        super.setUp();
-    }
-
-    protected void tearDown()
-    {
-
-    }
-
-    /**
-     * test mojo lookup, test harness should be working fine
-     *
-     * @throws Exception
-     */
-    public void testHarnessEnvironment()
-        throws Exception
-    {
-        File testPom = new File( getBasedir(), defaultPomFilePath );
-        ResourcesMojo mojo = (ResourcesMojo) lookupMojo( "testResources", testPom );
-
-        assertNotNull( mojo );
-    }
-
-    /**
-     * @throws Exception
-     */
-    public void testTestResourceDirectoryCreation()
-        throws Exception
-    {
-        File testPom = new File( getBasedir(), defaultPomFilePath );
-        TestResourcesMojo mojo = (TestResourcesMojo) lookupMojo( "testResources", testPom );
-        MavenProjectResourcesStub project = new MavenProjectResourcesStub( "testResourceDirectoryStructure" );
-        List resources = project.getBuild().getResources();
-
-        assertNotNull( mojo );
-
-        project.addFile( "file4.txt" );
-        project.addFile( "package/file3.nottest" );
-        project.addFile( "notpackage/file1.include" );
-        project.addFile( "package/test/file1.txt" );
-        project.addFile( "notpackage/test/file2.txt" );
-        project.setupBuildEnvironment();
-
-        setVariableValueToObject( mojo, "project", project );
-        setVariableValueToObject( mojo, "resources", resources );
-        setVariableValueToObject( mojo, "outputDirectory", project.getBuild().getTestOutputDirectory() );
-        setVariableValueToObject( mojo, "filters", new LinkedList() );
-        mojo.execute();
-
-        String resorucesDir = project.getTestOutputDirectory();
-
-        assertTrue( FileUtils.fileExists( resorucesDir + "/file4.txt" ) );
-        assertTrue( FileUtils.fileExists( resorucesDir + "/package/file3.nottest" ) );
-        assertTrue( FileUtils.fileExists( resorucesDir + "/notpackage/file1.include" ) );
-        assertTrue( FileUtils.fileExists( resorucesDir + "/package/test" ) );
-        assertTrue( FileUtils.fileExists( resorucesDir + "/notpackage/test" ) );
-    }
-}
+package org.apache.maven.plugin.resources;
+
+/*
+ * Copyright 2001-2006 The Apache Software Foundation.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+import java.io.File;
+import java.util.LinkedList;
+import java.util.List;
+
+import org.apache.maven.plugin.resources.stub.MavenProjectResourcesStub;
+import org.apache.maven.plugin.testing.AbstractMojoTestCase;
+import org.codehaus.plexus.util.FileUtils;
+
+public class TestResourcesTest
+    extends AbstractMojoTestCase
+{
+    protected final static String defaultPomFilePath = "/target/test-classes/unit/resources-test/plugin-config.xml";
+
+    protected void setUp()
+        throws Exception
+    {
+        super.setUp();
+    }
+
+    protected void tearDown()
+    {
+
+    }
+
+    /**
+     * test mojo lookup, test harness should be working fine
+     *
+     * @throws Exception
+     */
+    public void testHarnessEnvironment()
+        throws Exception
+    {
+        File testPom = new File( getBasedir(), defaultPomFilePath );
+        ResourcesMojo mojo = (ResourcesMojo) lookupMojo( "testResources", testPom );
+
+        assertNotNull( mojo );
+    }
+
+    /**
+     * @throws Exception
+     */
+    public void testTestResourceDirectoryCreation()
+        throws Exception
+    {
+        File testPom = new File( getBasedir(), defaultPomFilePath );
+        TestResourcesMojo mojo = (TestResourcesMojo) lookupMojo( "testResources", testPom );
+        MavenProjectResourcesStub project = new MavenProjectResourcesStub( "testResourceDirectoryStructure" );
+        List resources = project.getBuild().getResources();
+
+        assertNotNull( mojo );
+
+        project.addFile( "file4.txt" );
+        project.addFile( "package/file3.nottest" );
+        project.addFile( "notpackage/file1.include" );
+        project.addFile( "package/test/file1.txt" );
+        project.addFile( "notpackage/test/file2.txt" );
+        project.setupBuildEnvironment();
+
+        setVariableValueToObject( mojo, "project", project );
+        setVariableValueToObject( mojo, "resources", resources );
+        setVariableValueToObject( mojo, "outputDirectory", new File( project.getBuild().getTestOutputDirectory() ) );
+        setVariableValueToObject( mojo, "filters", new LinkedList() );
+        mojo.execute();
+
+        String resorucesDir = project.getTestOutputDirectory();
+
+        assertTrue( FileUtils.fileExists( resorucesDir + "/file4.txt" ) );
+        assertTrue( FileUtils.fileExists( resorucesDir + "/package/file3.nottest" ) );
+        assertTrue( FileUtils.fileExists( resorucesDir + "/notpackage/file1.include" ) );
+        assertTrue( FileUtils.fileExists( resorucesDir + "/package/test" ) );
+        assertTrue( FileUtils.fileExists( resorucesDir + "/notpackage/test" ) );
+    }
+}