View Javadoc
1   package org.codehaus.gmavenplus.mojo;
2   
3   import org.apache.maven.project.MavenProject;
4   import org.apache.maven.shared.model.fileset.FileSet;
5   import org.junit.Before;
6   import org.junit.Test;
7   import org.mockito.Mock;
8   import org.mockito.MockitoAnnotations;
9   
10  import java.io.File;
11  import java.util.List;
12  
13  import static java.util.Collections.singletonList;
14  import static org.junit.Assert.assertEquals;
15  import static org.junit.Assert.assertTrue;
16  import static org.mockito.Mockito.doReturn;
17  
18  
19  /**
20   * Unit tests for the AbstractGroovySourcesMojo class.
21   *
22   * @author Keegan Witt
23   */
24  public class AbstractGroovySourcesMojoTest {
25      private TestMojo testMojo;
26  
27      @Mock
28      private MavenProject project;
29  
30      @Mock
31      private File basedir;
32  
33      @Before
34      public void setup() {
35          MockitoAnnotations.openMocks(this);
36          testMojo = new TestMojo();
37          doReturn(basedir).when(project).getBasedir();
38          doReturn(singletonList("basedir" + File.separator + "src" + File.separator + "main" + File.separator + "java")).when(project).getCompileSourceRoots();
39          doReturn(singletonList("basedir" + File.separator + "src" + File.separator + "test" + File.separator + "java")).when(project).getTestCompileSourceRoots();
40          testMojo.project = project;
41      }
42  
43      @Test
44      public void mainDefaultPattern() {
45          FileSet[] results = testMojo.getFilesets(null, false);
46  
47          assertEquals(1, results.length);
48          assertEquals("basedir" + File.separator + "src" + File.separator + "main" + File.separator + "groovy", results[0].getDirectory());
49          assertEquals(1, results[0].getIncludes().size());
50          assertListsEqual(singletonList("**" + File.separator + "*.groovy"), results[0].getIncludes());
51      }
52  
53      @Test
54      public void testDefaultPattern() {
55          FileSet[] results = testMojo.getTestFilesets(null, false);
56  
57          assertEquals(1, results.length);
58          assertEquals("basedir" + File.separator + "src" + File.separator + "test" + File.separator + "groovy", results[0].getDirectory());
59          assertEquals(1, results[0].getIncludes().size());
60          assertListsEqual(singletonList("**" + File.separator + "*.groovy"), results[0].getIncludes());
61      }
62  
63      @Test
64      public void mainWithJavaPattern() {
65          FileSet[] results = testMojo.getFilesets(null, true);
66  
67          assertEquals(2, results.length);
68          assertEquals("basedir" + File.separator + "src" + File.separator + "main" + File.separator + "groovy", results[0].getDirectory());
69          assertEquals(1, results[0].getIncludes().size());
70          assertListsEqual(singletonList("**" + File.separator + "*.groovy"), results[0].getIncludes());
71          assertEquals(1, results[1].getIncludes().size());
72          assertListsEqual(singletonList("**" + File.separator + "*.java"), results[1].getIncludes());
73      }
74  
75      @Test
76      public void testWithJavaPattern() {
77          FileSet[] results = testMojo.getTestFilesets(null, true);
78  
79          assertEquals(2, results.length);
80          assertEquals("basedir" + File.separator + "src" + File.separator + "test" + File.separator + "groovy", results[0].getDirectory());
81          assertEquals(1, results[0].getIncludes().size());
82          assertListsEqual(singletonList("**" + File.separator + "*.groovy"), results[0].getIncludes());
83          assertEquals(1, results[1].getIncludes().size());
84          assertListsEqual(singletonList("**" + File.separator + "*.java"), results[1].getIncludes());
85      }
86  
87      @Test
88      public void mainWithSpecifiedPattern() {
89          FileSet fileSet = new FileSet();
90          fileSet.setDirectory("basedir" + File.separator + "src" + File.separator + "custom");
91          fileSet.setIncludes(singletonList("**" + File.separator + "*.gvy"));
92          FileSet[] specifiedSources = new FileSet[]{fileSet};
93          FileSet[] results = testMojo.getTestFilesets(specifiedSources, false);
94  
95          assertEquals(1, results.length);
96          assertEquals("basedir" + File.separator + "src" + File.separator + "custom", results[0].getDirectory());
97          assertEquals(1, results[0].getIncludes().size());
98          assertListsEqual(singletonList("**" + File.separator + "*.gvy"), results[0].getIncludes());
99      }
100 
101     @Test
102     public void testWithSpecifiedPattern() {
103         FileSet fileSet = new FileSet();
104         fileSet.setDirectory("basedir" + File.separator + "src" + File.separator + "custom");
105         fileSet.setIncludes(singletonList("**" + File.separator + "*.gvy"));
106         FileSet[] specifiedSources = new FileSet[]{fileSet};
107         FileSet[] results = testMojo.getTestFilesets(specifiedSources, false);
108 
109         assertEquals(1, results.length);
110         assertEquals("basedir" + File.separator + "src" + File.separator + "custom", results[0].getDirectory());
111         assertEquals(1, results[0].getIncludes().size());
112         assertListsEqual(singletonList("**" + File.separator + "*.gvy"), results[0].getIncludes());
113     }
114 
115     @Test
116     public void mainWithSpecifiedPatternAndJavaPattern() {
117         FileSet fileSet = new FileSet();
118         fileSet.setDirectory("basedir" + File.separator + "src" + File.separator + "custom");
119         fileSet.setIncludes(singletonList("**" + File.separator + "*.gvy"));
120         FileSet[] specifiedSources = new FileSet[]{fileSet};
121         FileSet[] results = testMojo.getTestFilesets(specifiedSources, true);
122 
123         assertEquals(2, results.length);
124         assertEquals("basedir" + File.separator + "src" + File.separator + "custom", results[0].getDirectory());
125         assertEquals(1, results[0].getIncludes().size());
126         assertListsEqual(singletonList("**" + File.separator + "*.gvy"), results[0].getIncludes());
127         assertEquals(1, results[1].getIncludes().size());
128         assertListsEqual(singletonList("**" + File.separator + "*.java"), results[1].getIncludes());
129     }
130 
131     @Test
132     public void testWithSpecifiedPatternAndJavaPattern() {
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     private void assertListsEqual(List<String> expected, List<String> actual) {
148         assertEquals(expected.size(), actual.size());
149         for (String expectedEntry : expected) {
150             assertTrue("Expected " + actual + " to contain " + expectedEntry, actual.contains(expectedEntry));
151         }
152     }
153 
154     public static class TestMojo extends AbstractGroovySourcesMojo {
155         @Override
156         public void execute() {
157         }
158     }
159 
160 }