001: package org.apache.maven.project.validation;
002:
003: /*
004: * Licensed to the Apache Software Foundation (ASF) under one
005: * or more contributor license agreements. See the NOTICE file
006: * distributed with this work for additional information
007: * regarding copyright ownership. The ASF licenses this file
008: * to you under the Apache License, Version 2.0 (the
009: * "License"); you may not use this file except in compliance
010: * with the License. You may obtain a copy of the License at
011: *
012: * http://www.apache.org/licenses/LICENSE-2.0
013: *
014: * Unless required by applicable law or agreed to in writing,
015: * software distributed under the License is distributed on an
016: * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
017: * KIND, either express or implied. See the License for the
018: * specific language governing permissions and limitations
019: * under the License.
020: */
021:
022: import org.apache.maven.model.Model;
023: import org.apache.maven.model.io.xpp3.MavenXpp3Reader;
024: import org.apache.maven.project.AbstractMavenProjectTestCase;
025:
026: import java.io.FileReader;
027: import java.io.Reader;
028: import java.util.List;
029:
030: /**
031: * @author <a href="mailto:trygvis@inamo.no">Trygve Laugstøl</a>
032: * @version $Id: DefaultModelValidatorTest.java 513038 2007-02-28 22:54:19Z jvanzyl $
033: */
034: public class DefaultModelValidatorTest extends
035: AbstractMavenProjectTestCase {
036: private Model model;
037:
038: private ModelValidator validator;
039:
040: public void testMissingModelVersion() throws Exception {
041: ModelValidationResult result = validate("missing-modelVersion-pom.xml");
042:
043: assertEquals(1, result.getMessageCount());
044:
045: assertEquals("'modelVersion' is missing.", result.getMessage(0));
046: }
047:
048: public void testMissingArtifactId() throws Exception {
049: ModelValidationResult result = validate("missing-artifactId-pom.xml");
050:
051: assertEquals(1, result.getMessageCount());
052:
053: assertEquals("'artifactId' is missing.", result.getMessage(0));
054: }
055:
056: public void testMissingGroupId() throws Exception {
057: ModelValidationResult result = validate("missing-groupId-pom.xml");
058:
059: assertEquals(1, result.getMessageCount());
060:
061: assertEquals("'groupId' is missing.", result.getMessage(0));
062: }
063:
064: public void testInvalidIds() throws Exception {
065: ModelValidationResult result = validate("invalid-ids-pom.xml");
066:
067: assertEquals(2, result.getMessageCount());
068:
069: assertEquals(
070: "'groupId' with value 'o/a/m' does not match a valid id pattern.",
071: result.getMessage(0));
072:
073: assertEquals(
074: "'artifactId' with value 'm$-do$' does not match a valid id pattern.",
075: result.getMessage(1));
076: }
077:
078: public void testMissingType() throws Exception {
079: ModelValidationResult result = validate("missing-type-pom.xml");
080:
081: assertEquals(1, result.getMessageCount());
082:
083: assertEquals("'packaging' is missing.", result.getMessage(0));
084: }
085:
086: public void testMissingVersion() throws Exception {
087: ModelValidationResult result = validate("missing-version-pom.xml");
088:
089: assertEquals(1, result.getMessageCount());
090:
091: assertEquals("'version' is missing.", result.getMessage(0));
092: }
093:
094: public void testInvalidAggregatorPackaging() throws Exception {
095: ModelValidationResult result = validate("invalid-aggregator-packaging-pom.xml");
096:
097: assertEquals(1, result.getMessageCount());
098:
099: assertTrue(result.getMessage(0).indexOf(
100: "Aggregator projects require 'pom' as packaging.") > -1);
101: }
102:
103: public void testMissingDependencyArtifactId() throws Exception {
104: ModelValidationResult result = validate("missing-dependency-artifactId-pom.xml");
105:
106: assertEquals(1, result.getMessageCount());
107:
108: assertTrue(result.getMessage(0).indexOf(
109: "'dependencies.dependency.artifactId' is missing.") > -1);
110: }
111:
112: public void testMissingDependencyGroupId() throws Exception {
113: ModelValidationResult result = validate("missing-dependency-groupId-pom.xml");
114:
115: assertEquals(1, result.getMessageCount());
116:
117: assertTrue(result.getMessage(0).indexOf(
118: "'dependencies.dependency.groupId' is missing.") > -1);
119: }
120:
121: public void testMissingDependencyVersion() throws Exception {
122: ModelValidationResult result = validate("missing-dependency-version-pom.xml");
123:
124: assertEquals(1, result.getMessageCount());
125:
126: assertTrue(result.getMessage(0).indexOf(
127: "'dependencies.dependency.version' is missing") > -1);
128: }
129:
130: public void testMissingDependencyManagementArtifactId()
131: throws Exception {
132: ModelValidationResult result = validate("missing-dependency-mgmt-artifactId-pom.xml");
133:
134: assertEquals(1, result.getMessageCount());
135:
136: assertTrue(result
137: .getMessage(0)
138: .indexOf(
139: "'dependencyManagement.dependencies.dependency.artifactId' is missing.") > -1);
140: }
141:
142: public void testMissingDependencyManagementGroupId()
143: throws Exception {
144: ModelValidationResult result = validate("missing-dependency-mgmt-groupId-pom.xml");
145:
146: assertEquals(1, result.getMessageCount());
147:
148: assertTrue(result
149: .getMessage(0)
150: .indexOf(
151: "'dependencyManagement.dependencies.dependency.groupId' is missing.") > -1);
152: }
153:
154: public void testMissingAll() throws Exception {
155: ModelValidationResult result = validate("missing-1-pom.xml");
156:
157: assertEquals(4, result.getMessageCount());
158:
159: List messages = result.getMessages();
160:
161: assertTrue(messages.contains("\'modelVersion\' is missing."));
162: assertTrue(messages.contains("\'groupId\' is missing."));
163: assertTrue(messages.contains("\'artifactId\' is missing."));
164: assertTrue(messages.contains("\'version\' is missing."));
165: // type is inherited from the super pom
166: }
167:
168: public void testMissingPluginArtifactId() throws Exception {
169: ModelValidationResult result = validate("missing-plugin-artifactId-pom.xml");
170:
171: assertEquals(1, result.getMessageCount());
172:
173: assertEquals("'build.plugins.plugin.artifactId' is missing.",
174: result.getMessage(0));
175: }
176:
177: public void testMissingRepositoryId() throws Exception {
178: ModelValidationResult result = validate("missing-repository-id-pom.xml");
179:
180: assertEquals(4, result.getMessageCount());
181:
182: assertEquals("'repositories.repository.id' is missing.", result
183: .getMessage(0));
184:
185: assertEquals("'repositories.repository.url' is missing.",
186: result.getMessage(1));
187:
188: assertEquals(
189: "'pluginRepositories.pluginRepository.id' is missing.",
190: result.getMessage(2));
191:
192: assertEquals(
193: "'pluginRepositories.pluginRepository.url' is missing.",
194: result.getMessage(3));
195: }
196:
197: public void testMissingResourceDirectory() throws Exception {
198: ModelValidationResult result = validate("missing-resource-directory-pom.xml");
199:
200: assertEquals(2, result.getMessageCount());
201:
202: assertEquals(
203: "'build.resources.resource.directory' is missing.",
204: result.getMessage(0));
205:
206: assertEquals(
207: "'build.testResources.testResource.directory' is missing.",
208: result.getMessage(1));
209: }
210:
211: private ModelValidationResult validate(String testName)
212: throws Exception {
213: Reader input = new FileReader(
214: getFileForClasspathResource("validation/" + testName));
215:
216: MavenXpp3Reader reader = new MavenXpp3Reader();
217:
218: validator = (ModelValidator) lookup(ModelValidator.ROLE);
219:
220: model = reader.read(input);
221:
222: ModelValidationResult result = validator.validate(model);
223:
224: assertNotNull(result);
225:
226: input.close();
227:
228: return result;
229: }
230: }
|