View Javadoc
1   /*
2    * Licensed to the Apache Software Foundation (ASF) under one
3    * or more contributor license agreements.  See the NOTICE file
4    * distributed with this work for additional information
5    * regarding copyright ownership.  The ASF licenses this file
6    * to you under the Apache License, Version 2.0 (the
7    * "License"); you may not use this file except in compliance
8    * with the License.  You may obtain a copy of the License at
9    *
10   *   http://www.apache.org/licenses/LICENSE-2.0
11   *
12   * Unless required by applicable law or agreed to in writing,
13   * software distributed under the License is distributed on an
14   * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
15   * KIND, either express or implied.  See the License for the
16   * specific language governing permissions and limitations
17   * under the License.
18   */
19  package org.apache.maven.plugin.eclipse;
20  
21  import java.util.ArrayList;
22  import java.util.List;
23  
24  import junit.framework.TestCase;
25  
26  /**
27   * Test class for EclipseSourceDir
28   * 
29   * @author <a href="mailto:baerrach@apache.org">Barrie Treloar</a>
30   * @version $Id: EclipseSourceDirTest.java 931322 2010-04-06 20:52:34Z fgiust $
31   */
32  public class EclipseSourceDirTest
33      extends TestCase
34  {
35      private EclipseSourceDir testFixture_src_main_java()
36      {
37          List includes = new ArrayList();
38          includes.add( EclipsePlugin.JAVA_FILE_PATTERN );
39          return new EclipseSourceDir( "/src/main/java", null, false, false, includes, null, false );
40      }
41  
42      private EclipseSourceDir testFixture_src_main_resources()
43      {
44          List excludes = new ArrayList();
45          excludes.add( EclipsePlugin.JAVA_FILE_PATTERN );
46          return new EclipseSourceDir( "/src/main/resources", "target/classes", true, false, null, excludes, false );
47      }
48  
49      private EclipseSourceDir testFixture_src_test_java()
50      {
51          List includes = new ArrayList();
52          includes.add( EclipsePlugin.JAVA_FILE_PATTERN );
53          return new EclipseSourceDir( "/src/test/java", "target/test-classes", false, true, includes, null, false );
54      }
55  
56      private EclipseSourceDir testFixture_src_test_resources()
57      {
58          List excludes = new ArrayList();
59          excludes.add( EclipsePlugin.JAVA_FILE_PATTERN );
60          return new EclipseSourceDir( "/src/test/resources", "target/test-classes", true, true, null, excludes, false );
61      }
62  
63      /**
64       * A merge with a source directory and a resource directory results in:
65       * <ul>
66       * <li>source directory
67       * <li>includes is empty
68       * <li>excludes is empty
69       * </ul>
70       * 
71       * @throws Exception
72       */
73      public void testMerge_src_main_java_with_src_main_resources()
74          throws Exception
75      {
76          EclipseSourceDir src_main_java = testFixture_src_main_java();
77          EclipseSourceDir src_main_resources = testFixture_src_main_resources();
78  
79          src_main_java.merge( src_main_resources );
80          assertEquals( "source /src/main/java: output=null, include=[], exclude=[], test=false, filtering=false",
81                        src_main_java.toString() );
82      }
83  
84      public void testMerge_two_resource_directories()
85          throws Exception
86      {
87          EclipseSourceDir resource1 = testFixture_src_main_resources();
88          EclipseSourceDir resource2 = testFixture_src_main_resources();
89  
90          resource1.getInclude().add( "**/*.txt" );
91          resource1.getExclude().add( "**/*.svn" );
92  
93          resource2.getInclude().add( "**/*.xml" );
94          resource2.getExclude().add( "**/*.cvs" );
95  
96          resource1.merge( resource2 );
97  
98          assertEquals(
99                        "resource /src/main/resources: output=target/classes, include=[**/*.txt|**/*.xml], exclude=[**/*.java|**/*.svn|**/*.cvs], test=false, filtering=false",
100                       resource1.toString() );
101     }
102 
103     public void testMerge_two_resource_directories_with_duplicates()
104         throws Exception
105     {
106         EclipseSourceDir resource1 = testFixture_src_main_resources();
107         EclipseSourceDir resource2 = testFixture_src_main_resources();
108 
109         resource1.getInclude().add( "**/*.dup" );
110         resource1.getInclude().add( "**/*.txt" );
111         resource1.getExclude().add( "**/*.svn" );
112         resource1.getExclude().add( "**/*~" );
113 
114         resource2.getInclude().add( "**/*.xml" );
115         resource2.getInclude().add( "**/*.dup" );
116         resource2.getExclude().add( "**/*.cvs" );
117         resource2.getExclude().add( "**/*~" );
118 
119         resource1.merge( resource2 );
120 
121         assertEquals(
122                       "resource /src/main/resources: output=target/classes, include=[**/*.dup|**/*.txt|**/*.xml], exclude=[**/*.java|**/*.svn|**/*~|**/*.cvs], test=false, filtering=false",
123                       resource1.toString() );
124     }
125 
126     public void testToString_src_main_java()
127     {
128         EclipseSourceDir objectUnderTest = testFixture_src_main_java();
129 
130         assertEquals(
131                       "source /src/main/java: output=null, include=[**/*.java], exclude=[], test=false, filtering=false",
132                       objectUnderTest.toString() );
133     }
134 
135     public void testToString_src_main_resources()
136     {
137         EclipseSourceDir objectUnderTest = testFixture_src_main_resources();
138 
139         assertEquals(
140                       "resource /src/main/resources: output=target/classes, include=[], exclude=[**/*.java], test=false, filtering=false",
141                       objectUnderTest.toString() );
142     }
143 
144     public void testToString_src_test_java()
145     {
146         EclipseSourceDir objectUnderTest = testFixture_src_test_java();
147 
148         assertEquals(
149                       "source /src/test/java: output=target/test-classes, include=[**/*.java], exclude=[], test=true, filtering=false",
150                       objectUnderTest.toString() );
151     }
152 
153     public void testToString_src_test_resources()
154     {
155         EclipseSourceDir objectUnderTest = testFixture_src_test_resources();
156 
157         assertEquals(
158                       "resource /src/test/resources: output=target/test-classes, include=[], exclude=[**/*.java], test=true, filtering=false",
159                       objectUnderTest.toString() );
160     }
161 
162     public void testMergWhenFilteringIsNotIdentical() throws Exception
163     {
164         EclipseSourceDir resource1 = testFixture_src_main_resources();
165         EclipseSourceDir resource2 = testFixture_src_main_resources();
166 
167         resource1.getInclude().add("**/*.dup");
168         resource1.getInclude().add("**/*.txt");
169         resource1.getExclude().add("**/*.svn");
170         resource1.getExclude().add("**/*~");
171 
172         resource2.getInclude().add("**/*.xml");
173         resource2.getInclude().add("**/*.dup");
174         resource2.getExclude().add("**/*.cvs");
175         resource2.getExclude().add("**/*~");
176         resource2.setFiltering(true);
177 
178         boolean result = resource1.merge(resource2);
179 
180         assertFalse("Resource dirs should not have been merged successfully", result);
181        
182         assertEquals(
183             "resource /src/main/resources: output=target/classes, include=[**/*.dup|**/*.txt|**/*.xml], exclude=[**/*.java|**/*.svn|**/*~|**/*.cvs], test=false, filtering=false",
184             resource1.toString());
185     }
186 
187     public void testMergWhenFilteringIsNotIdenticalOverlapping() throws Exception
188     {
189         EclipseSourceDir resource1 = testFixture_src_main_resources();
190         EclipseSourceDir resource2 = testFixture_src_main_resources();
191 
192         resource2.getInclude().add("**/*.properties");
193         resource2.setFiltering(true);
194 
195         boolean result = resource1.merge(resource2);
196 
197         assertFalse("Resource dirs should not have been merged successfully", result);
198 
199         assertEquals(
200             "resource /src/main/resources: output=target/classes, include=[], exclude=[**/*.java], test=false, filtering=false",
201             resource1.toString());
202     }
203 
204 }