View Javadoc
1   /*
2    * Copyright 2013 the original author or authors.
3    *
4    * Licensed under the Apache License, Version 2.0 (the "License");
5    * You may not use this file except in compliance with the License.
6    * You may obtain a copy of the License at
7    *
8    * http://www.apache.org/licenses/LICENSE-2.0
9    *
10   * Unless required by applicable law or agreed to in writing, software
11   * distributed under the License is distributed on an "AS IS" BASIS,
12   * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13   * See the License for the specific language governing permissions and
14   * limitations under the License.
15   */
16  
17  package org.codehaus.gmavenplus.mojo;
18  
19  import org.apache.maven.project.MavenProject;
20  import org.apache.maven.shared.model.fileset.FileSet;
21  import org.junit.Before;
22  import org.junit.Test;
23  import org.mockito.Mock;
24  import org.mockito.MockitoAnnotations;
25  
26  import java.io.File;
27  import java.util.List;
28  
29  import static java.util.Collections.singletonList;
30  import static org.junit.Assert.assertEquals;
31  import static org.junit.Assert.assertTrue;
32  import static org.mockito.Mockito.doReturn;
33  
34  
35  /**
36   * Unit tests for the AbstractGroovySourcesMojo class.
37   *
38   * @author Keegan Witt
39   */
40  public class AbstractGroovySourcesMojoTest {
41      private TestMojo testMojo;
42  
43      @Mock
44      private MavenProject project;
45  
46      @Mock
47      private File basedir;
48  
49      @Before
50      public void setup() {
51          MockitoAnnotations.openMocks(this);
52          testMojo = new TestMojo();
53          doReturn(basedir).when(project).getBasedir();
54          doReturn(singletonList("basedir" + File.separator + "src" + File.separator + "main" + File.separator + "java")).when(project).getCompileSourceRoots();
55          doReturn(singletonList("basedir" + File.separator + "src" + File.separator + "test" + File.separator + "java")).when(project).getTestCompileSourceRoots();
56          testMojo.project = project;
57      }
58  
59      @Test
60      public void mainDefaultPattern() {
61          FileSet[] results = testMojo.getFilesets(null, false);
62  
63          assertEquals(1, results.length);
64          assertEquals("basedir" + File.separator + "src" + File.separator + "main" + File.separator + "groovy", results[0].getDirectory());
65          assertEquals(1, results[0].getIncludes().size());
66          assertListsEqual(singletonList("**" + File.separator + "*.groovy"), results[0].getIncludes());
67      }
68  
69      @Test
70      public void testDefaultPattern() {
71          FileSet[] results = testMojo.getTestFilesets(null, false);
72  
73          assertEquals(1, results.length);
74          assertEquals("basedir" + File.separator + "src" + File.separator + "test" + File.separator + "groovy", results[0].getDirectory());
75          assertEquals(1, results[0].getIncludes().size());
76          assertListsEqual(singletonList("**" + File.separator + "*.groovy"), results[0].getIncludes());
77      }
78  
79      @Test
80      public void mainWithJavaPattern() {
81          FileSet[] results = testMojo.getFilesets(null, true);
82  
83          assertEquals(2, results.length);
84          assertEquals("basedir" + File.separator + "src" + File.separator + "main" + File.separator + "groovy", results[0].getDirectory());
85          assertEquals(1, results[0].getIncludes().size());
86          assertListsEqual(singletonList("**" + File.separator + "*.groovy"), results[0].getIncludes());
87          assertEquals(1, results[1].getIncludes().size());
88          assertListsEqual(singletonList("**" + File.separator + "*.java"), results[1].getIncludes());
89      }
90  
91      @Test
92      public void testWithJavaPattern() {
93          FileSet[] results = testMojo.getTestFilesets(null, true);
94  
95          assertEquals(2, results.length);
96          assertEquals("basedir" + File.separator + "src" + File.separator + "test" + File.separator + "groovy", results[0].getDirectory());
97          assertEquals(1, results[0].getIncludes().size());
98          assertListsEqual(singletonList("**" + File.separator + "*.groovy"), results[0].getIncludes());
99          assertEquals(1, results[1].getIncludes().size());
100         assertListsEqual(singletonList("**" + File.separator + "*.java"), results[1].getIncludes());
101     }
102 
103     @Test
104     public void mainWithSpecifiedPattern() {
105         FileSet fileSet = new FileSet();
106         fileSet.setDirectory("basedir" + File.separator + "src" + File.separator + "custom");
107         fileSet.setIncludes(singletonList("**" + File.separator + "*.gvy"));
108         FileSet[] specifiedSources = new FileSet[]{fileSet};
109         FileSet[] results = testMojo.getTestFilesets(specifiedSources, false);
110 
111         assertEquals(1, results.length);
112         assertEquals("basedir" + File.separator + "src" + File.separator + "custom", results[0].getDirectory());
113         assertEquals(1, results[0].getIncludes().size());
114         assertListsEqual(singletonList("**" + File.separator + "*.gvy"), results[0].getIncludes());
115     }
116 
117     @Test
118     public void testWithSpecifiedPattern() {
119         FileSet fileSet = new FileSet();
120         fileSet.setDirectory("basedir" + File.separator + "src" + File.separator + "custom");
121         fileSet.setIncludes(singletonList("**" + File.separator + "*.gvy"));
122         FileSet[] specifiedSources = new FileSet[]{fileSet};
123         FileSet[] results = testMojo.getTestFilesets(specifiedSources, false);
124 
125         assertEquals(1, results.length);
126         assertEquals("basedir" + File.separator + "src" + File.separator + "custom", results[0].getDirectory());
127         assertEquals(1, results[0].getIncludes().size());
128         assertListsEqual(singletonList("**" + File.separator + "*.gvy"), results[0].getIncludes());
129     }
130 
131     @Test
132     public void mainWithSpecifiedPatternAndJavaPattern() {
133         FileSet fileSet = new FileSet();
134         fileSet.setDirectory("basedir" + File.separator + "src" + File.separator + "custom");
135         fileSet.setIncludes(singletonList("**" + File.separator + "*.gvy"));
136         FileSet[] specifiedSources = new FileSet[]{fileSet};
137         FileSet[] results = testMojo.getTestFilesets(specifiedSources, true);
138 
139         assertEquals(2, results.length);
140         assertEquals("basedir" + File.separator + "src" + File.separator + "custom", results[0].getDirectory());
141         assertEquals(1, results[0].getIncludes().size());
142         assertListsEqual(singletonList("**" + File.separator + "*.gvy"), results[0].getIncludes());
143         assertEquals(1, results[1].getIncludes().size());
144         assertListsEqual(singletonList("**" + File.separator + "*.java"), results[1].getIncludes());
145     }
146 
147     @Test
148     public void testWithSpecifiedPatternAndJavaPattern() {
149         FileSet fileSet = new FileSet();
150         fileSet.setDirectory("basedir" + File.separator + "src" + File.separator + "custom");
151         fileSet.setIncludes(singletonList("**" + File.separator + "*.gvy"));
152         FileSet[] specifiedSources = new FileSet[]{fileSet};
153         FileSet[] results = testMojo.getTestFilesets(specifiedSources, true);
154 
155         assertEquals(2, results.length);
156         assertEquals("basedir" + File.separator + "src" + File.separator + "custom", results[0].getDirectory());
157         assertEquals(1, results[0].getIncludes().size());
158         assertListsEqual(singletonList("**" + File.separator + "*.gvy"), results[0].getIncludes());
159         assertEquals(1, results[1].getIncludes().size());
160         assertListsEqual(singletonList("**" + File.separator + "*.java"), results[1].getIncludes());
161     }
162 
163     private void assertListsEqual(List<String> expected, List<String> actual) {
164         assertEquals(expected.size(), actual.size());
165         for (String expectedEntry : expected) {
166             assertTrue("Expected " + actual + " to contain " + expectedEntry, actual.contains(expectedEntry));
167         }
168     }
169 
170     public static class TestMojo extends AbstractGroovySourcesMojo {
171         @Override
172         public void execute() {
173         }
174     }
175 
176 }