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
21
22
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 }