1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17 package org.codehaus.gmavenplus.mojo;
18
19 import org.apache.maven.artifact.Artifact;
20 import org.apache.maven.execution.MavenSession;
21 import org.apache.maven.model.Model;
22 import org.apache.maven.plugin.MojoExecution;
23 import org.apache.maven.project.MavenProject;
24 import org.codehaus.gmavenplus.util.ClassWrangler;
25 import org.junit.Before;
26 import org.junit.Test;
27 import org.mockito.Mock;
28 import org.mockito.MockitoAnnotations;
29 import org.mockito.Spy;
30
31 import java.util.List;
32 import java.util.Properties;
33
34 import static org.junit.Assert.*;
35 import static org.mockito.Mockito.*;
36
37
38
39
40
41
42
43 public class AbstractToolsMojoTest {
44 private TestMojo testMojo;
45 @Spy
46 private Properties properties;
47 @Mock
48 private MavenProject project;
49 @Mock
50 private MavenSession session;
51 @Mock
52 private List<Artifact> pluginArtifacts;
53 @Mock
54 private MojoExecution mojoExecution;
55 @Mock
56 private ClassWrangler classWrangler;
57
58 @Before
59 public void setup() throws Exception {
60 MockitoAnnotations.openMocks(this);
61 testMojo = new TestMojo();
62 testMojo.project = project;
63 testMojo.session = session;
64 testMojo.pluginArtifacts = pluginArtifacts;
65 testMojo.mojoExecution = mojoExecution;
66 testMojo.classWrangler = classWrangler;
67 Class<?> antBuilderClass;
68 try {
69 antBuilderClass = Class.forName("groovy.ant.AntBuilder");
70 } catch (ClassNotFoundException e) {
71 antBuilderClass = Class.forName("groovy.util.AntBuilder");
72 }
73
74 doReturn(antBuilderClass).when(classWrangler).getClass(anyString());
75 }
76
77 @Test
78 public void testInitializeProperties() {
79 testMojo.initializeProperties();
80
81 assertNotNull(testMojo.properties.get("project"));
82 assertNotNull(testMojo.properties.get("session"));
83 assertNotNull(testMojo.properties.get("pluginArtifacts"));
84 assertNotNull(testMojo.properties.get("mojoExecution"));
85 }
86
87 @Test
88 public void testInitializePropertiesNull() {
89 testMojo.project = null;
90 testMojo.session = null;
91 testMojo.pluginArtifacts = null;
92 testMojo.mojoExecution = mojoExecution;
93
94 testMojo.initializeProperties();
95
96 verify(properties, never()).put(eq("project"), any(MavenProject.class));
97 verify(properties, never()).put(eq("session"), any(MavenSession.class));
98 verify(properties, never()).put(eq("pluginArtifacts"), anyList());
99 verify(properties, never()).put(eq("mojoExecution"), any(MojoExecution.class));
100 }
101
102 @Test
103 public void testInitializePropertiesAlreadyInProps() {
104 testMojo.properties = properties;
105
106 testMojo.initializeProperties();
107 testMojo.initializeProperties();
108
109 verify(properties, times(1)).put(eq("project"), any(MavenProject.class));
110 verify(properties, times(1)).put(eq("session"), any(MavenSession.class));
111 verify(properties, times(1)).put(eq("pluginArtifacts"), anyList());
112 verify(properties, times(1)).put(eq("mojoExecution"), any(MojoExecution.class));
113 }
114
115 @Test
116 public void testAddAllProjectProperties() {
117 Properties projectProperties = new Properties();
118 projectProperties.put("foo", "bar");
119 Model model = new Model();
120 model.setProperties(projectProperties);
121 testMojo.project = new MavenProject(model);
122 testMojo.bindAllProjectProperties = true;
123
124 testMojo.initializeProperties();
125
126 assertEquals("bar", testMojo.properties.get("foo"));
127 }
128
129 @Test
130 public void testAddAllSessionUserProperties() {
131 MavenSession session = mock(MavenSession.class);
132 Properties sessionProperties = new Properties();
133 sessionProperties.put("foo", "bar");
134 doReturn(sessionProperties).when(session).getUserProperties();
135 testMojo.session = session;
136 testMojo.bindAllSessionUserProperties = true;
137
138 testMojo.initializeProperties();
139
140 assertEquals("bar", testMojo.properties.get("foo"));
141 }
142
143 @Test
144 public void testBindAllProjectPropertiesAndBindSessionUserOverridePropertiesWhenEmpty() {
145 MavenSession session = mock(MavenSession.class);
146 Properties projectProperties = new Properties();
147 projectProperties.put("foo", "bar");
148 doReturn(new Properties()).when(session).getUserProperties();
149 doReturn(projectProperties).when(project).getProperties();
150 testMojo.session = session;
151 testMojo.bindAllProjectProperties = true;
152 testMojo.bindSessionUserOverrideProperties = true;
153
154 testMojo.initializeProperties();
155 }
156
157 @Test
158 public void testSessionPropertiesOverrideProjectPropertiesAndIncludesOthers() {
159 Properties projectProperties = new Properties();
160 projectProperties.put("foo", "bar");
161 Model model = new Model();
162 model.setProperties(projectProperties);
163 testMojo.project = new MavenProject(model);
164 MavenSession session = mock(MavenSession.class);
165 Properties sessionProperties = new Properties();
166 sessionProperties.put("foo", "baz");
167 sessionProperties.put("bar", "foo");
168 doReturn(sessionProperties).when(session).getUserProperties();
169 testMojo.session = session;
170 testMojo.bindAllProjectProperties = true;
171 testMojo.bindAllSessionUserProperties = true;
172
173 testMojo.initializeProperties();
174 assertEquals("baz", testMojo.properties.get("foo"));
175 assertEquals("foo", testMojo.properties.get("bar"));
176 }
177
178 @Test
179 public void testSessionPropertiesOverrideProjectProperties() {
180 Properties projectProperties = new Properties();
181 projectProperties.put("foo", "bar");
182 Model model = new Model();
183 model.setProperties(projectProperties);
184 testMojo.project = new MavenProject(model);
185 MavenSession session = mock(MavenSession.class);
186 Properties sessionProperties = new Properties();
187 sessionProperties.put("foo", "baz");
188 sessionProperties.put("bar", "foo");
189 doReturn(sessionProperties).when(session).getUserProperties();
190 testMojo.session = session;
191 testMojo.bindAllProjectProperties = true;
192 testMojo.bindSessionUserOverrideProperties = true;
193
194 testMojo.initializeProperties();
195 assertEquals("baz", testMojo.properties.get("foo"));
196 assertNull(testMojo.properties.get("bar"));
197 }
198
199 protected static class TestMojo extends AbstractToolsMojo {
200 @Override
201 public void execute() {
202 }
203 }
204
205 }