1 package org.apache.maven.project.validation;
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22 import org.apache.maven.model.Model;
23 import org.apache.maven.model.io.xpp3.MavenXpp3Reader;
24 import org.apache.maven.project.AbstractMavenProjectTestCase;
25 import org.codehaus.plexus.util.ReaderFactory;
26
27 import java.io.Reader;
28 import java.util.List;
29
30
31
32
33
34 public class DefaultModelValidatorTest
35 extends AbstractMavenProjectTestCase
36 {
37 private Model model;
38
39 private ModelValidator validator;
40
41 public void testMissingModelVersion()
42 throws Exception
43 {
44 ModelValidationResult result = validate( "missing-modelVersion-pom.xml" );
45
46 assertEquals( 1, result.getMessageCount() );
47
48 assertEquals( "'modelVersion' is missing.", result.getMessage( 0 ) );
49 }
50
51 public void testMissingArtifactId()
52 throws Exception
53 {
54 ModelValidationResult result = validate( "missing-artifactId-pom.xml" );
55
56 assertEquals( 1, result.getMessageCount() );
57
58 assertEquals( "'artifactId' is missing.", result.getMessage( 0 ) );
59 }
60
61 public void testMissingGroupId()
62 throws Exception
63 {
64 ModelValidationResult result = validate( "missing-groupId-pom.xml" );
65
66 assertEquals( 1, result.getMessageCount() );
67
68 assertEquals( "'groupId' is missing.", result.getMessage( 0 ) );
69 }
70
71 public void testInvalidIds()
72 throws Exception
73 {
74 ModelValidationResult result = validate( "invalid-ids-pom.xml" );
75
76 assertEquals( 2, result.getMessageCount() );
77
78 assertEquals( "'groupId' with value 'o/a/m' does not match a valid id pattern.", result.getMessage( 0 ) );
79
80 assertEquals( "'artifactId' with value 'm$-do$' does not match a valid id pattern.", result.getMessage( 1 ) );
81 }
82
83 public void testMissingType()
84 throws Exception
85 {
86 ModelValidationResult result = validate( "missing-type-pom.xml" );
87
88 assertEquals( 1, result.getMessageCount() );
89
90 assertEquals( "'packaging' is missing.", result.getMessage( 0 ) );
91 }
92
93 public void testMissingVersion()
94 throws Exception
95 {
96 ModelValidationResult result = validate( "missing-version-pom.xml" );
97
98 assertEquals( 1, result.getMessageCount() );
99
100 assertEquals( "'version' is missing.", result.getMessage( 0 ) );
101 }
102
103 public void testInvalidAggregatorPackaging()
104 throws Exception
105 {
106 ModelValidationResult result = validate( "invalid-aggregator-packaging-pom.xml" );
107
108 assertEquals( 1, result.getMessageCount() );
109
110 assertTrue( result.getMessage( 0 ).indexOf( "Aggregator projects require 'pom' as packaging." ) > -1 );
111 }
112
113 public void testMissingDependencyArtifactId()
114 throws Exception
115 {
116 ModelValidationResult result = validate( "missing-dependency-artifactId-pom.xml" );
117
118 assertEquals( 1, result.getMessageCount() );
119
120 assertTrue( result.getMessage( 0 ).indexOf( "'dependencies.dependency.artifactId' is missing." ) > -1 );
121 }
122
123 public void testMissingDependencyGroupId()
124 throws Exception
125 {
126 ModelValidationResult result = validate( "missing-dependency-groupId-pom.xml" );
127
128 assertEquals( 1, result.getMessageCount() );
129
130 assertTrue( result.getMessage( 0 ).indexOf( "'dependencies.dependency.groupId' is missing." ) > -1 );
131 }
132
133 public void testMissingDependencyVersion()
134 throws Exception
135 {
136 ModelValidationResult result = validate( "missing-dependency-version-pom.xml" );
137
138 assertEquals( 1, result.getMessageCount() );
139
140 assertTrue( result.getMessage( 0 ).indexOf( "'dependencies.dependency.version' is missing" ) > -1 );
141 }
142
143 public void testMissingDependencyManagementArtifactId()
144 throws Exception
145 {
146 ModelValidationResult result = validate( "missing-dependency-mgmt-artifactId-pom.xml" );
147
148 assertEquals( 1, result.getMessageCount() );
149
150 assertTrue( result.getMessage( 0 ).indexOf(
151 "'dependencyManagement.dependencies.dependency.artifactId' is missing." ) > -1 );
152 }
153
154 public void testMissingDependencyManagementGroupId()
155 throws Exception
156 {
157 ModelValidationResult result = validate( "missing-dependency-mgmt-groupId-pom.xml" );
158
159 assertEquals( 1, result.getMessageCount() );
160
161 assertTrue( result.getMessage( 0 ).indexOf(
162 "'dependencyManagement.dependencies.dependency.groupId' is missing." ) > -1 );
163 }
164
165 public void testMissingAll()
166 throws Exception
167 {
168 ModelValidationResult result = validate( "missing-1-pom.xml" );
169
170 assertEquals( 4, result.getMessageCount() );
171
172 List messages = result.getMessages();
173
174 assertTrue( messages.contains( "\'modelVersion\' is missing." ) );
175 assertTrue( messages.contains( "\'groupId\' is missing." ) );
176 assertTrue( messages.contains( "\'artifactId\' is missing." ) );
177 assertTrue( messages.contains( "\'version\' is missing." ) );
178
179 }
180
181 public void testMissingPluginArtifactId()
182 throws Exception
183 {
184 ModelValidationResult result = validate( "missing-plugin-artifactId-pom.xml" );
185
186 assertEquals( 1, result.getMessageCount() );
187
188 assertEquals( "'build.plugins.plugin.artifactId' is missing.", result.getMessage( 0 ) );
189 }
190
191 public void testMissingRepositoryId()
192 throws Exception
193 {
194 ModelValidationResult result = validate( "missing-repository-id-pom.xml" );
195
196 assertEquals( 4, result.getMessageCount() );
197
198 assertEquals( "'repositories.repository.id' is missing.", result.getMessage( 0 ) );
199
200 assertEquals( "'repositories.repository.url' is missing.", result.getMessage( 1 ) );
201
202 assertEquals( "'pluginRepositories.pluginRepository.id' is missing.", result.getMessage( 2 ) );
203
204 assertEquals( "'pluginRepositories.pluginRepository.url' is missing.", result.getMessage( 3 ) );
205 }
206
207 public void testMissingResourceDirectory()
208 throws Exception
209 {
210 ModelValidationResult result = validate( "missing-resource-directory-pom.xml" );
211
212 assertEquals( 2, result.getMessageCount() );
213
214 assertEquals( "'build.resources.resource.directory' is missing.", result.getMessage( 0 ) );
215
216 assertEquals( "'build.testResources.testResource.directory' is missing.", result.getMessage( 1 ) );
217 }
218
219 private ModelValidationResult validate( String testName )
220 throws Exception
221 {
222 Reader input = ReaderFactory.newXmlReader( getFileForClasspathResource( "validation/" + testName ) );
223
224 MavenXpp3Reader reader = new MavenXpp3Reader();
225
226 validator = (ModelValidator) lookup( ModelValidator.ROLE );
227
228 model = reader.read( input );
229
230 ModelValidationResult result = validator.validate( model );
231
232 assertNotNull( result );
233
234 input.close();
235
236 return result;
237 }
238 }