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.descriptor;
20  
21  import java.io.IOException;
22  import java.io.Reader;
23  
24  import junit.framework.TestCase;
25  import org.codehaus.plexus.component.repository.ComponentDependency;
26  import org.codehaus.plexus.component.repository.ComponentRequirement;
27  import org.codehaus.plexus.configuration.PlexusConfiguration;
28  import org.codehaus.plexus.configuration.PlexusConfigurationException;
29  import org.codehaus.plexus.util.ReaderFactory;
30  
31  /**
32   * Tests {@link PluginDescriptorBuilder}.
33   *
34   * @author Benjamin Bentmann
35   */
36  public class PluginDescriptorBuilderTest extends TestCase {
37  
38      private PluginDescriptor build(String resource) throws IOException, PlexusConfigurationException {
39          Reader reader = ReaderFactory.newXmlReader(getClass().getResourceAsStream(resource));
40  
41          return new PluginDescriptorBuilder().build(reader);
42      }
43  
44      public void testBuildReader() throws Exception {
45          PluginDescriptor pd = build("/plugin.xml");
46  
47          assertEquals("org.apache.maven.plugins", pd.getGroupId());
48          assertEquals("maven-jar-plugin", pd.getArtifactId());
49          assertEquals("2.3-SNAPSHOT", pd.getVersion());
50          assertEquals("jar", pd.getGoalPrefix());
51          assertEquals("plugin-description", pd.getDescription());
52          assertEquals(false, pd.isIsolatedRealm());
53          assertEquals(true, pd.isInheritedByDefault());
54          assertEquals(2, pd.getMojos().size());
55          assertEquals(1, pd.getDependencies().size());
56  
57          MojoDescriptor md = pd.getMojos().get(0);
58  
59          assertEquals("jar", md.getGoal());
60          assertEquals("mojo-description", md.getDescription());
61          assertEquals("runtime", md.getDependencyResolutionRequired());
62          assertEquals("test", md.getDependencyCollectionRequired());
63          assertEquals(false, md.isAggregator());
64          assertEquals(false, md.isDirectInvocationOnly());
65          assertEquals(true, md.isInheritedByDefault());
66          assertEquals(false, md.isOnlineRequired());
67          assertEquals(true, md.isProjectRequired());
68          assertEquals(false, md.isThreadSafe());
69          assertEquals("package", md.getPhase());
70          assertEquals("org.apache.maven.plugin.jar.JarMojo", md.getImplementation());
71          assertEquals("antrun", md.getComponentConfigurator());
72          assertEquals("java", md.getLanguage());
73          assertEquals("per-lookup", md.getInstantiationStrategy());
74          assertEquals("some-goal", md.getExecuteGoal());
75          assertEquals("generate-sources", md.getExecutePhase());
76          assertEquals("cobertura", md.getExecuteLifecycle());
77          assertEquals("2.2", md.getSince());
78          assertEquals("deprecated-mojo", md.getDeprecated());
79          assertEquals(1, md.getRequirements().size());
80          assertEquals(1, md.getParameters().size());
81  
82          assertNotNull(md.getMojoConfiguration());
83          assertEquals(1, md.getMojoConfiguration().getChildCount());
84  
85          PlexusConfiguration pc = md.getMojoConfiguration().getChild(0);
86  
87          assertEquals("${jar.finalName}", pc.getValue());
88          assertEquals("${project.build.finalName}", pc.getAttribute("default-value"));
89          assertEquals("java.lang.String", pc.getAttribute("implementation"));
90  
91          Parameter mp = md.getParameters().get(0);
92  
93          assertEquals("finalName", mp.getName());
94          assertEquals("jarName", mp.getAlias());
95          assertEquals("java.lang.String", mp.getType());
96          assertEquals("java.lang.String", mp.getImplementation());
97          assertEquals(true, mp.isEditable());
98          assertEquals(false, mp.isRequired());
99          assertEquals("parameter-description", mp.getDescription());
100         assertEquals("deprecated-parameter", mp.getDeprecated());
101         assertEquals("${jar.finalName}", mp.getExpression());
102         assertEquals("${project.build.finalName}", mp.getDefaultValue());
103         assertEquals("3.0.0", mp.getSince());
104 
105         ComponentRequirement cr = md.getRequirements().get(0);
106 
107         assertEquals("org.codehaus.plexus.archiver.Archiver", cr.getRole());
108         assertEquals("jar", cr.getRoleHint());
109         assertEquals("jarArchiver", cr.getFieldName());
110 
111         ComponentDependency cd = pd.getDependencies().get(0);
112 
113         assertEquals("org.apache.maven", cd.getGroupId());
114         assertEquals("maven-plugin-api", cd.getArtifactId());
115         assertEquals("2.0.6", cd.getVersion());
116         assertEquals("jar", cd.getType());
117 
118         md = pd.getMojos().get(1);
119 
120         assertEquals("war", md.getGoal());
121         assertEquals(null, md.getDependencyResolutionRequired());
122         assertEquals(null, md.getDependencyCollectionRequired());
123         assertEquals(true, md.isThreadSafe());
124     }
125 }